<!-- Generated by SpecStory -->

# 扩展图片展协议的 exif 字段 (2025-06-13 20:08:41)

_**User**_

扩展这个协议。
此协议定义一个 feed 是属于一个图片展的类型。此协议中包含协议版本号
定义 exif 可选集。扩充当前的 exif 字段

---

_**Assistant**_

我将扩展这个RSS EXIF协议，添加图片展类型定义、协议版本号和更多EXIF字段。让我更新这个规范文档。

---

```diff
  ## 概述
  
- 本规范定义了在 RSS 2.0 feeds 中包含摄影 EXIF 数据的标准方法，专为照片画廊网站设计。该扩展允许 RSS 阅读器和其他应用程序访问详细的摄影技术参数。
+ 本规范定义了在 RSS 2.0 feeds 中包含摄影 EXIF 数据的标准方法，专为照片画廊网站设计。该扩展允许 RSS 阅读器和其他应用程序访问详细的摄影技术参数，并支持不同类型的图片展示。
+ 
+ ## 协议版本
+ 
+ **当前版本**: `1.1`  
+ **协议标识**: `afilmory-rss-exif`
  
  ## 命名空间
  
- XML 命名空间: `https://exif.org/rss/1.0`  
+ XML 命名空间: `https://exif.org/rss/1.1`  
  推荐前缀: `exif`
  
```

```diff
  <rss version="2.0" 
       xmlns:atom="http://www.w3.org/2005/Atom" 
-      xmlns:exif="https://exif.org/rss/1.0">
+      xmlns:exif="https://exif.org/rss/1.1">
  ```
+ 
+ ## 协议元数据
+ 
+ ### `<exif:version>`
+ 
+ **描述**: 协议版本号  
+ **位置**: `<channel>` 元素内  
+ **格式**: 语义化版本号  
+ **示例**: `<exif:version>1.1</exif:version>`  
+ **必需**: 是
+ 
+ ### `<exif:protocol>`
+ 
+ **描述**: 协议标识符  
+ **位置**: `<channel>` 元素内  
+ **格式**: 字符串标识符  
+ **示例**: `<exif:protocol>afilmory-rss-exif</exif:protocol>`  
+ **必需**: 是
+ 
+ ## 图片展类型定义
+ 
+ ### `<exif:galleryType>`
+ 
+ **描述**: 定义feed所属的图片展类型  
+ **位置**: `<channel>` 元素内  
+ **格式**: 枚举值  
+ **必需**: 是
+ 
+ **支持的类型**:
+ 
+ - `portfolio` - 个人作品集
+ - `exhibition` - 展览作品
+ - `documentary` - 纪实摄影
+ - `landscape` - 风景摄影
+ - `portrait` - 人像摄影
+ - `street` - 街头摄影
+ - `macro` - 微距摄影
+ - `wildlife` - 野生动物摄影
+ - `architecture` - 建筑摄影
+ - `abstract` - 抽象摄影
+ - `commercial` - 商业摄影
+ - `event` - 活动摄影
+ - `travel` - 旅行摄影
+ - `fine-art` - 艺术摄影
+ - `mixed` - 混合类型
+ 
+ **示例**: `<exif:galleryType>landscape</exif:galleryType>`
+ 
+ ### `<exif:galleryDescription>`
+ 
+ **描述**: 图片展的详细描述  
+ **位置**: `<channel>` 元素内  
+ **格式**: CDATA 包装的字符串  
+ **示例**: `<exif:galleryDescription><![CDATA[探索自然之美的风景摄影作品集]]></exif:galleryDescription>`  
+ **必需**: 否
+ 
+ ## EXIF 可选集定义
+ 
+ ### `<exif:supportedFields>`
+ 
+ **描述**: 声明此feed支持的EXIF字段集合  
+ **位置**: `<channel>` 元素内  
+ **格式**: 逗号分隔的字段名列表  
+ **示例**: `<exif:supportedFields>basic,lens,location,technical</exif:supportedFields>`
+ 
+ **预定义字段集**:
+ 
+ - `basic` - 基础字段集 (aperture, shutterSpeed, iso, camera)
+ - `lens` - 镜头字段集 (focalLength, focalLength35mm, lens, maxAperture)
+ - `location` - 位置字段集 (gpsLatitude, gpsLongitude, location, altitude)
+ - `technical` - 技术字段集 (whiteBalance, meteringMode, flashMode, colorSpace)
+ - `advanced` - 高级字段集 (exposureProgram, sceneMode, contrast, saturation, sharpness)
+ - `all` - 所有字段
  
  ## EXIF 标签定义
  
- ### 相机设置参数
+ ### 相机设置参数 (basic)
  
  #### `<exif:aperture>`
```

```diff
  **描述**: 快门速度  
  **格式**:
- 
  - 长曝光: `{秒数}s`
  - 短曝光: `1/{分母}s`  
-   **示例**:
+ **示例**:
  - `<exif:shutterSpeed>1/250s</exif:shutterSpeed>`
  - `<exif:shutterSpeed>2s</exif:shutterSpeed>`  
-   **映射**: EXIF ExposureTime 字段
+ **映射**: EXIF ExposureTime 字段
  
  #### `<exif:iso>`
```

```diff
  **格式**: `{±数值} EV`  
  **示例**:
- 
  - `<exif:exposureCompensation>+0.7 EV</exif:exposureCompensation>`
  - `<exif:exposureCompensation>-1.3 EV</exif:exposureCompensation>`  
-   **映射**: EXIF ExposureBiasValue 字段
+ **映射**: EXIF ExposureBiasValue 字段
  
- ### 镜头参数
+ ### 镜头参数 (lens)
  
  #### `<exif:focalLength>`
```

```diff
  **映射**: EXIF LensModel 字段
  
- ### 设备信息
+ #### `<exif:maxAperture>`
+ 
+ **描述**: 镜头最大光圈  
+ **格式**: `f/{数值}`  
+ **示例**: `<exif:maxAperture>f/1.4</exif:maxAperture>`  
+ **映射**: EXIF MaxApertureValue 字段
+ 
+ ### 设备信息 (basic)
  
  #### `<exif:camera>`
```

```diff
  **映射**: EXIF Make + Model 字段组合
  
- ### 图像属性
+ #### `<exif:serialNumber>`
+ 
+ **描述**: 相机序列号  
+ **格式**: 字符串  
+ **示例**: `<exif:serialNumber>12345678</exif:serialNumber>`  
+ **映射**: EXIF BodySerialNumber 字段
+ 
+ ### 图像属性 (basic)
  
  #### `<exif:imageWidth>`
```

```diff
  **示例**: `<exif:dateTaken>2025-06-05T16:12:43.000Z</exif:dateTaken>`  
  **映射**: EXIF DateTimeOriginal 字段
+ 
+ #### `<exif:orientation>`
+ 
+ **描述**: 图像方向  
+ **格式**: 整数 (1-8)  
+ **示例**: `<exif:orientation>1</exif:orientation>`  
+ **映射**: EXIF Orientation 字段
+ 
+ ### 位置信息 (location)
+ 
+ #### `<exif:gpsLatitude>`
+ 
+ **描述**: GPS纬度  
+ **格式**: 十进制度数  
+ **示例**: `<exif:gpsLatitude>39.9042</exif:gpsLatitude>`  
+ **映射**: EXIF GPSLatitude 字段
+ 
+ #### `<exif:gpsLongitude>`
+ 
+ **描述**: GPS经度  
+ **格式**: 十进制度数  
+ **示例**: `<exif:gpsLongitude>116.4074</exif:gpsLongitude>`  
+ **映射**: EXIF GPSLongitude 字段
+ 
+ #### `<exif:altitude>`
+ 
+ **描述**: 海拔高度  
+ **格式**: `{数值}m`  
+ **示例**: `<exif:altitude>1200m</exif:altitude>`  
+ **映射**: EXIF GPSAltitude 字段
+ 
+ #### `<exif:location>`
+ 
+ **描述**: 拍摄地点名称  
+ **格式**: CDATA 包装的字符串  
+ **示例**: `<exif:location><![CDATA[北京天安门广场]]></exif:location>`  
+ **映射**: 地理编码或用户标注
+ 
+ ### 技术参数 (technical)
+ 
+ #### `<exif:whiteBalance>`
+ 
+ **描述**: 白平衡设置  
+ **格式**: 枚举值  
+ **示例**: `<exif:whiteBalance>Auto</exif:whiteBalance>`  
+ **映射**: EXIF WhiteBalance 字段  
+ **可选值**: `Auto`, `Daylight`, `Cloudy`, `Tungsten`, `Fluorescent`, `Flash`, `Manual`
+ 
+ #### `<exif:meteringMode>`
+ 
+ **描述**: 测光模式  
+ **格式**: 枚举值  
+ **示例**: `<exif:meteringMode>Matrix</exif:meteringMode>`  
+ **映射**: EXIF MeteringMode 字段  
+ **可选值**: `Matrix`, `Center-weighted`, `Spot`, `Multi-spot`, `Pattern`
+ 
+ #### `<exif:flashMode>`
+ 
+ **描述**: 闪光灯模式  
+ **格式**: 枚举值  
+ **示例**: `<exif:flashMode>Off</exif:flashMode>`  
+ **映射**: EXIF Flash 字段  
+ **可选值**: `Off`, `On`, `Auto`, `Red-eye`, `Fill`, `Slow-sync`
+ 
+ #### `<exif:colorSpace>`
+ 
+ **描述**: 色彩空间  
+ **格式**: 枚举值  
+ **示例**: `<exif:colorSpace>sRGB</exif:colorSpace>`  
+ **映射**: EXIF ColorSpace 字段  
+ **可选值**: `sRGB`, `Adobe RGB`, `ProPhoto RGB`, `DCI-P3`
+ 
+ ### 高级参数 (advanced)
+ 
+ #### `<exif:exposureProgram>`
+ 
+ **描述**: 曝光程序  
+ **格式**: 枚举值  
+ **示例**: `<exif:exposureProgram>Aperture Priority</exif:exposureProgram>`  
+ **映射**: EXIF ExposureProgram 字段  
+ **可选值**: `Manual`, `Program`, `Aperture Priority`, `Shutter Priority`, `Creative`, `Action`, `Portrait`, `Landscape`
+ 
+ #### `<exif:sceneMode>`
+ 
+ **描述**: 场景模式  
+ **格式**: CDATA 包装的字符串  
+ **示例**: `<exif:sceneMode><![CDATA[Portrait]]></exif:sceneMode>`  
+ **映射**: EXIF SceneCaptureType 字段
+ 
+ #### `<exif:contrast>`
+ 
+ **描述**: 对比度设置  
+ **格式**: 枚举值  
+ **示例**: `<exif:contrast>Normal</exif:contrast>`  
+ **映射**: EXIF Contrast 字段  
+ **可选值**: `Low`, `Normal`, `High`
+ 
+ #### `<exif:saturation>`
+ 
+ **描述**: 饱和度设置  
+ **格式**: 枚举值  
+ **示例**: `<exif:saturation>Normal</exif:saturation>`  
+ **映射**: EXIF Saturation 字段  
+ **可选值**: `Low`, `Normal`, `High`
+ 
+ #### `<exif:sharpness>`
+ 
+ **描述**: 锐度设置  
+ **格式**: 枚举值  
+ **示例**: `<exif:sharpness>Normal</exif:sharpness>`  
+ **映射**: EXIF Sharpness 字段  
+ **可选值**: `Soft`, `Normal`, `Hard`
  
  ## 完整示例
  
  ```xml
  <?xml version="1.0" encoding="UTF-8"?>
- <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:exif="https://exif.org/rss/1.0">
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:exif="https://exif.org/rss/1.1">
    <channel>
-     <title><![CDATA[我的摄影画廊]]></title>
+     <title><![CDATA[我的风景摄影画廊]]></title>
      <link>https://example.com</link>
-     <description><![CDATA[分享我的摄影作品]]></description>
+     <description><![CDATA[分享我的风景摄影作品]]></description>
+     
+     <!-- 协议元数据 -->
+     <exif:version>1.1</exif:version>
+     <exif:protocol>afilmory-rss-exif</exif:protocol>
+     
+     <!-- 图片展类型 -->
+     <exif:galleryType>landscape</exif:galleryType>
+     <exif:galleryDescription><![CDATA[探索自然之美的风景摄影作品集]]></exif:galleryDescription>
+     
+     <!-- 支持的EXIF字段集 -->
+     <exif:supportedFields>basic,lens,location,technical</exif:supportedFields>
      
      <item>
```

```diff
        <enclosure url="https://example.com/thumbnails/photo123.webp" type="image/webp" length="1024000" />
        
-       <!-- EXIF 数据扩展 -->
+       <!-- 基础EXIF数据 -->
        <exif:aperture>f/1.4</exif:aperture>
        <exif:shutterSpeed>1/250s</exif:shutterSpeed>
```

```diff
        <exif:dateTaken>2025-06-05T16:12:43.000Z</exif:dateTaken>
        <exif:camera><![CDATA[FUJIFILM X-T5]]></exif:camera>
+       <exif:orientation>1</exif:orientation>
+       
+       <!-- 镜头信息 -->
        <exif:lens><![CDATA[BS-Optics FX 50mm F1.4]]></exif:lens>
        <exif:focalLength>50mm</exif:focalLength>
        <exif:focalLength35mm>75mm</exif:focalLength35mm>
+       <exif:maxAperture>f/1.4</exif:maxAperture>
+       
+       <!-- 位置信息 -->
+       <exif:gpsLatitude>39.9042</exif:gpsLatitude>
+       <exif:gpsLongitude>116.4074</exif:gpsLongitude>
+       <exif:altitude>50m</exif:altitude>
+       <exif:location><![CDATA[北京天安门广场]]></exif:location>
+       
+       <!-- 技术参数 -->
+       <exif:whiteBalance>Auto</exif:whiteBalance>
+       <exif:meteringMode>Matrix</exif:meteringMode>
+       <exif:flashMode>Off</exif:flashMode>
+       <exif:colorSpace>sRGB</exif:colorSpace>
      </item>
    </channel>
```

```diff
  - 标准的 RSS 2.0 阅读器将忽略不识别的命名空间元素
  - 核心 RSS 功能（标题、链接、描述等）保持完全兼容
+ - v1.0 协议的字段在 v1.1 中保持完全兼容
  
  ### 可选字段
  
- - 所有 EXIF 标签都是可选的
+ - 除协议版本和图片展类型外，所有 EXIF 标签都是可选的
  - 如果某个 EXIF 数据不可用，应省略对应的标签而不是输出空值
+ - 实现者可以根据 `supportedFields` 声明选择性实现字段集
  
  ### 数据验证
  
  - 实现者应验证 EXIF 数据的有效性
  - 对于无效或缺失的数据，建议静默跳过而不是输出错误值
+ - 枚举类型字段应严格验证取值范围
  
  ### 性能考虑
  
  - EXIF 数据提取可能影响 RSS 生成性能
  - 建议在构建时预处理 EXIF 数据而非实时提取
+ - 可根据 `supportedFields` 声明优化数据提取范围
+ 
+ ### 字段集实现建议
+ 
+ - `basic` 字段集适用于大多数基础应用
+ - `location` 字段集需要考虑隐私保护
+ - `advanced` 字段集适用于专业摄影应用
+ - 实现者可以自定义字段集组合
  
  ## 版本历史
  
+ - **v1.1** (2025-01-19): 扩展规范
+   - 添加协议版本号和标识符
+   - 定义图片展类型系统
+   - 引入EXIF字段集概念
+   - 扩充EXIF字段定义
+   - 添加位置信息、技术参数和高级参数字段集
+ 
  - **v1.0** (2025-01-19): 初始规范发布
    - 定义核心 EXIF 标签集合
```

---

我已经成功扩展了RSS EXIF协议规范，主要增加了以下内容：

## 主要扩展内容

### 1. 协议版本管理
- 添加了协议版本号 `1.1` 和协议标识符 `afilmory-rss-exif`
- 在 `<channel>` 元素中必须声明版本信息

### 2. 图片展类型定义
- 新增 `<exif:galleryType>` 字段，支持15种不同的图片展类型：
  - `portfolio` (个人作品集)
  - `exhibition` (展览作品)  
  - `documentary` (纪实摄影)
  - `landscape` (风景摄影)
  - `portrait` (人像摄影)
  - `street` (街头摄影)
  - `macro` (微距摄影)
  - `wildlife` (野生动物摄影)
  - `architecture` (建筑摄影)
  - `abstract` (抽象摄影)
  - `commercial` (商业摄影)
  - `event` (活动摄影)
  - `travel` (旅行摄影)
  - `fine-art` (艺术摄影)
  - `mixed` (混合类型)

### 3. EXIF 可选集系统
- 引入 `<exif:supportedFields>` 字段，定义了6个预设字段集：
  - `basic` - 基础字段集（光圈、快门、ISO、相机等）
  - `lens` - 镜头字段集（焦距、镜头型号、最大光圈等）
  - `location` - 位置字段集（GPS坐标、海拔、地点名称）
  - `technical` - 技术字段集（白平衡、测光模式、闪光灯、色彩空间）
  - `advanced` - 高级字段集（曝光程序、场景模式、对比度、饱和度、锐度）
  - `all` - 所有字段

### 4. 扩充的EXIF字段
新增了大量EXIF字段，包括：

**设备信息**：
- `serialNumber` - 相机序列号

**图像属性**：
- `orientation` - 图像方向

**位置信息**：
- `gpsLatitude` - GPS纬度
- `gpsLongitude` - GPS经度  
- `altitude` - 海拔高度
- `location` - 拍摄地点名称

**技术参数**：
- `whiteBalance` - 白平衡设置
- `meteringMode` - 测光模式
- `flashMode` - 闪光灯模式
- `colorSpace` - 色彩空间

**高级参数**：
- `exposureProgram` - 曝光程序
- `sceneMode` - 场景模式
- `contrast` - 对比度设置
- `saturation` - 饱和度设置
- `sharpness` - 锐度设置

### 5. 完整示例更新
- 提供了包含所有新功能的完整XML示例
- 展示了如何在实际RSS feed中使用这些扩展

### 6. 实现指导
- 添加了字段集实现建议
- 更新了兼容性和性能考虑事项
- 提供了数据验证和隐私保护建议

这个扩展后的协议现在支持更丰富的摄影元数据，可以满足不同类型图片展的需求，同时保持了良好的向后兼容性和灵活的实现选择。

---

