• 如何在.NET下操作图像元Exif 数据 - [软件技术]

    2007-10-19

    分类: 软件技术

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://kware.blogbus.com/logs/10871143.html

    1. JFIF JPEG 文件交换格式 (JFIF)
       JPEG 是一种压缩方案,不是一种文件格式。“JPEG 文件交换格式(JFIF)”是一种文件格式,常用于存储和
       传输已根据 JPEG 方案压缩的图像。Web 浏览器显示的 JFIF 文件使用 .jpg 扩展名。

       可交换图像文件 (EXIF)
       EXIF 是一种适用于数码相机拍摄的照片的文件格式。EXIF 文件中含有根据 JPEG 规格压缩的图像。EXIF文
       件中还包含了有关照片的信息(拍摄日期、快门速度、曝光时间等)和相机信息(制造商、型号等)。

    2. NET 如何:读取图像元 Exif 数据
       一些图像文件中包含可供您读取以确定图像特征的元数据。例如,数字照片中可能包含可供您读取以确定用
       于捕获该图像的照相机的品牌和型号的元数据。利用GDI+,可以读取现有的元数据,也可以将新的元数据写
       入图像文件中。

       GDI+ 将单独的元数据段存储在 PropertyItem 对象中。您可读取 Image 对象的 PropertyItems属性以便从
       某个文件中检索所有的元数据。PropertyItems 属性返回一个 PropertyItem 对象的数组。

       在NET中的EXIF属性项操作方法:System.Drawing.Imaging.Image.*
         public PropertyItem[] PropertyItems {get;}
         public int[] PropertyIdList {get;}
         public void RemovePropertyItem(int propid);
         public PropertyItem GetPropertyItem(int propid);
         public void SetPropertyItem(PropertyItem propitem);

      System.Drawing.Imaging.PropertyItem
       PropertyItem 对象具有以下四个属性:Id、Value、Len 和 Type。

       1) Id 用于标识元数据项的标记。下表显示一些可赋予 Id 的值。
          十六进制值  说明
          0x0100      图象宽度              0x0101      图象高度
          0x010E      图象描述
          0x010F      设备制造商            0x0110      设备型号
          0x0131      所用软件              0x0132      拍摄时间
          0x013B      作者
          0x0320      图像标题
          0x5090      亮度表                0x5091      色度表
          0x8298      版权声明              0x829A      Exif 曝光时间
          0x9000      EXIF版本              0x9003      原始拍摄时间ExifDTOriginal
          0x927C      厂家备注              0x9286      用户备注

       2) Value 数组值。这些值的格式由 Type 属性确定。
       3) Len 长度。Value 属性指向的值的数组长度(以字节表示)。

       4) Type 类型
          Value 属性指向的数组中值的数据类型。下表显示由 Type 属性值指示的格式
          数值  说明
          1     一个 Byte                             2     ASCII 编码的 Byte 对象的数组
          3     16 位整数                             4     32 位整数
          5     包含两个表示有理数的 Byte 对象的数组  6     未使用
          7     未定义                                8     未使用
          9     SLong                                 10    SRational


    收藏到:Del.icio.us