`
renzhelife
  • 浏览: 669721 次
文章分类
社区版块
存档分类
最新评论

给JPEG添加Exif图片说明信息的简单方法

 
阅读更多

将图片说明加入到jpg文件内,最简便的方法是:用16进制编辑器(或编个读写程序)直接把这部分信息写入jpg文件保存,不会对图像有任何影响。

  在jpg文件开始两字节是FF D8,可以在它们后面插入以下35字节(如果在FF D8后面的是FF E0块,最好插入这个块后面,这个块的长度就是那两字节的TAG标志之后的两字节,长度不包括这两字节TAG,比如FF E0块是16字节长,那么FF ED块就应该在原文件第21字节前面插入):

FF ED 00 22 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 49 4D 04 04 00 00 00 00 00 05 1C 02 78 00 00

  上面00 22表示这个FF ED块的长度(也是不包括TAG这两字节),注意到上面数据的字节数35-2=33,即00 21才对,但是本块最后还需要加一个00字节作为块结束符,所以预先写为00 22,后面还要修正的。所要添加的图片说明文字串应该在00结束符之前,比如“abcdef”的ASCII码是61 62 63 64 65 66,(说明文字可以用汉字),再加上结束符00。然后修改三处数字:1C 02 78是本块内的一种子块(以1C 02 ..的三字节形式为标识符,可能和FF ED信息块一样有不止一个),这种标识符后面两字(如上面的00 00)是该子块数据长度(如abcdef就应该是6字节,即00 06,不包括三字节标识符和两字节长度),这是第一处需要修正的数据;第二处是本块的第29、30两字节(如上面的00 05),修正方法是在原值基础上增加新旧说明文字改变的长度,比如原值05对应串长为0,新串若为6,即可增加6-0=6,所以原值应改为 5+6=11(即16进制的0B);最后一处如果错了JPEG图像就不能显示了,应把FF ED后面的块长度数据00 22也加上文字说明改变的长度6,即00 28,这是本块最终的总长度-2字节标志占用。然后保存文件即可。如果原来jpg文件的Exif已经有这个图片说明信息(只搜索含有1C 02 78的FF ED块),应根据同样的原理直接在上面修改,因为显示Exif信息的图片说明的时候一般以最远离文件头的数据为准。

  更多有关Exif信息访问www.exif.org,提供JEIDA制定的EXIF 2.1官方标准(1998.6.12)和2.2官方标准(2002.4)的PDF文件。

附一:写入JPEG图像EXIF信息的C#源代码


附二:以下资料来源http://www.opanda.com/cn/iexif/exif.htm

  所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。文件 头中有一系列“0xFF??”格式的字符串,称为“标识”,用来标记JPEG文件的信息段。“0xFFD8”表示图像信息开始,“0xFFD9”表示图像 信息结束,这两个标识后面没有信息,而其它标识紧跟一些信息字符。

  0xFFE0 -- 0xFFEF之间的标识符称为“应用标记”,没有被常规JPEG文件利用,Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全 球定位信息。按照Exif2.1标准对这些标识符的定义,数码相机可以把各种拍摄信息记入数码图像中,应用软件可以读取这些数据,再按照Exif2.1标 准,检索出它们的具体含义,一般包括以下一些信息:

  ImageDescription:图像描述、来源,指生成图像的工具
  Artist:作者,有些相机可以输入使用者名字
  Make:生产者,指产品生产厂家
  Model:型号,指设备型号
  Orientation:方向,有的相机支持
  XResolution/YResolution:X/Y方向分辨率
  ResolutionUnit:分辨率单位,一般为PPI
  Software:软件,显示固件Firmware版本
  DateTime:日期和时间
  YCbCrPositioning:色相定位
  ExifOffset:Exif信息位置,定义Exif信息在文件中的写入位置,有些软件不显示
  ExposureTime:曝光时间,即快门速度
  FNumber:光圈系数
  ExposureProgram:曝光程序,指程序式自动曝光的设置,各相机不同,可能是Sutter Priority(快门优先)、Aperture Priority(快门优先)等等
  ISOspeedratings:感光度
  ExifVersion:Exif版本
  DateTimeOriginal:创建时间
  DateTimeDigitized:数字化时间
  ComponentsConfiguration:图像构造(多指色彩组合方案)
  CompressedBitsPerPixel (BPP):压缩时每像素色彩位,指压缩程度
  ExposureBiasValue:曝光补偿
  MaxApertureValue:最大光圈
  MeteringMode:测光方式,平均式测光、中央重点测光、点测光等
  LightSource:光源,指白平衡设置
  Flash:是否使用闪光灯
  FocalLength:焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距Maker Note (User Comment)作者标记、说明、记录
  FlashPixVersion:FlashPix版本(个别机型支持)
  ColorSpace:色域、色彩空间
  ExifImageWidth (Pixel X Dimension):图像宽度,指横向像素数
  ExifImageLength (Pixel Y Dimension):图像高度,指纵向像素数
  Interoperability:IFD通用性扩展项定义指针,和TIFF文件相关,具体含义不详
  FileSource:源文件
  Compression:压缩比。

什么是EXIF?

  Exif是英文Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA -- Japan Electronic Industry Development Association) 制订,目前的最新版本是2.21 版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF -- Design role for Camera File system)可能以Exif2.1为基础。

  Exif文件实际是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了有关拍摄信息的内容和索引图。所以你可以使用任何支持JPEG格式的图像工具软件观看或修改Exif文件,但打开时可能看不到Exif信息,一旦修改,Exif信息可能丢失。

  简单来说,EXIF信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在我 们熟知的JPEG/TIFF文件的头部,也就是说EXIF信息是镶嵌在JPEG/TIFF图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、 ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它就好像是傻 瓜相机的日期打印功能一样,只不过EXIF信息所记录的资讯更为详尽和完备。

什么是GPS?

  GPS,Global Positioning System(全球卫星定位系统),是美国从20世纪70年代开始耗巨资研制,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力 的新一代卫星导航与定位系统。越来越多的数码相机厂商也开始在他们的新产品里提供了GPS功能的支持,(如Kodak DCS760等)可将照片拍摄瞬间所处经度、纬度、海拔的三维空间定位数据记载在图片里,只要图片里保留了完整的GPS信息,IExif就能准确地再现给 查看者。

什么是IPTC/NAA?

  IPTC-NAA由美国报业协会(NAA)和国际印刷电信委员会(IPTC)制定的信息标准,以识别传输的文本和图像。该标准包括关于题注、关键字、类别、资料来源和原稿的条目等。当前许多新闻图片机器都包含了IPTC/NAA记录。

原文地址:http://hi.baidu.com/moneyin/blog/item/2f6617c4bd392bcc39db4990.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics