图像JPEG&EXIF格式介绍(二)

2.3、IFD:Image file directory图像文件路径

继续接着上一节介绍IFD相关的东西

IFD的directory entry结构是怎样的呢

          从上面可知,前2个字节是ExifTag num号,接着2个字节是数据格式DataFormat(Ulong),后面4个字节是components个数,最后4个字节是数据值或数据值的偏移量。

IFD的数据格式情况如下,rational为小数值,包含两个整个值,第一个是分子,第二个是分母;上大面的例子中是ulong数据类型。

Value123456
Formatunsigned byteascii stringsunsigned shortunsigned longunsigned rationalsigned byte
Bytes/component112481
Value789101112
Formatundefinedsigned shortsigned longsigned rationalsingle floatdouble float
Bytes/component124848

通过“Bytes/component”值大小乘以components个数可以得到整个数据大小,若是数据大小小于4个字节,dirEntry项的最后4字节写入的是tag数据值,否则就是数据的偏移量大小。下面就是一个大于4个字节的例子,数据格式类型是5,即“Bytes/component”是8,而components个数为1,其乘积大小超过4字节,从而采用写入偏移量值,406+0x0c("II"地址)+1=0x01A2,该地址里的内容是72,代表Y分辨率是72dpi。

         IFD0问题包含一个特定Tag为Exif Offset(0x8769),在这个entry项的最后4字节中存放着Exif SubIFD的偏移量,Exif SubIFD也是IFD格式的数据结构,包含有一些数码信息如ISO,光圈Fn,曝光时间等等。

 从下面看出Exif SubIFD里的dirEntry[5]项是光圈Fn信息,值是f2.2。

 2.4、其他信息

        Exif格式包含thumbnail image,一般紧临IFD1存放。thumbnail图像有3种格式,JPEG格式(JPEG使用YCbCr),RGB TIFF格式,YCbCr TIFF格式。如果IFD1里的Compression(0x0103)tag值是6,thumbnail image格式是JPEG,大部Exif image是使用JPEG格式给thumbnail,在这种情况下,从IFD1里的ThumbnailOffset(0x0201)tag里可以获取到thumbnail的偏移量,从ThumbnailLength(0x0202)tag里可以获取thumbnail的大小,数据格式是JPEG格式,即是从0xFFD8开始,到0xFFD9结束。

2.5、JPEG格式 的结构

        前面有简单介绍过,JPEG格式是以0xFFD8 SOI marker开始,以0xFFD9 EOI marker结束,中间会有其他的marker及数据来组成,如下图所示,Exif使用app1 marker字段,定义量化表使用DQT marker字段,而像app5不知名的marker字段则是软件自定义的部分内容,如一些tuning数据,awb,ae参数等或其他的数据。 SOS marker字段(0xFFDA)为Start of scan的意思,在其后面就是jpeg image数据(scanData marker字段),最后就是EOI marker字段。

 我们来看下其他marker字段的各个函数

Code assignment Symbol Description
Start of Frame markers, non-differential, Huffman coding
X’FFC0’SOF0Baseline DCT
X’FFC1’SOF1Extended sequential DCT
X’FFC2’SOF2Progressive DCT
X’FFC3’SOF3Lossless (sequential)
Start of Frame markers, differential, Huffman coding
X’FFC5’SOF5Differential sequential DCT
X’FFC6’SOF6Differential progressive DCT
X’FFC7’SOF7Differential lossless (sequential)
Start of Frame markers, non-differential, arithmetic coding
X’FFC8’JPGReserved for additional JPEG extensions
X’FFC9’SOF9Extended sequential DCT
X’FFCA’SOF10Progressive DCT
X’FFCB’SOF11Lossless (sequential)
Start of Frame markers, differential, arithmetic coding
X’FFCD’SOF13Differential sequential DCT
X’FFCE’SOF14Differential progressive DCT
X’FFCF’SOF15Differential lossless (sequential)
Huffman table specification
X’FFC4’ DHT Define Huffman table(s)
Arithmetic coding conditioning specification
X’FFCC’ DAC Define arithmetic coding conditioning(s)
Restart interval termination
X’FFD0’ through X’FFD7’ RSTm* Restart with modulo 8 count “m”
Other markers
X’FFD8’SOI*Start of image
X’FFD9’EOI*End of image
X’FFDA’SOSStart of scan
X’FFDB’DQTDefine quantization table(s)
X’FFDC’DNLDefine number of lines
X’FFDD’DRIDefine restart interval
X’FFDE’DHPDefine hierarchical progression
X’FFDF’EXPExpand reference component(s)
X’FFE0’ through X’FFEF’APPnReserved for application segments
X’FFF7’ through X’FFFD’JPGnReserved for additional JPEG extensions
X’FFFE’COMComment
Reserved markers
X’FF01’TEM*For temporary private use in arithmetic coding
X’FF02’ through X’FFBF’RESReserved
Version 1 extensions
X’FFF0’VERVersion
X’FFF1’DTIDefine tiled image
X’FFF2’DTTDefine tile
X’FFF3’SRFSelectively refined frame
X’FFF4’SRSSelectively refined scan
X’FFF5’DCRDefine component registration
X’FFF6’DQSDefine quantizer scale selection

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、安装和使用 Jhead 2.82_绿色英文版 使用时,点击开始菜单-运行命令,在对话框输入: "jhead –命令参数 jpeg文件" 例如: “jhead -de D:\My Pictures\A.jpg” 删除D盘My Pictures文件夹A.jpg文件的exif信息。 “jhead -de D:\My Pictures\*.jpg” 删除D盘My Pictures文件夹所有jpg文件的exif信息。其中星号是通配符。 、通用指令参数 -te 将其他jpeg文件的eixf导入目标jpeg。例如"jhead –te D:\My Pictures\B.jpg D:\My Pictures\A.jpg" -dc 删除jpeg信息中的备注。注意,jpeg文件有两个备注,一是和其他文件一样的备注,另一个是exif信息中的备注。jhead仅对exif信息有效。 -de 完全删除exif信息。 -du 删除非原始exif信息,例如Photoshop、Turbophoto之类编辑后修改exif留下的信息。 -purejpg 删除所有jpeg文件非必须的信息。相当于-de、-dc和-du的集合,可以将文件减小数k。 -ce 修改文件的jpeg文件头部分备注(此备注并非exif信息)。该指令会打开文本编辑器,并在编辑器关闭时将备注信息存入文件。 -cs 导出备注。例如"jhead –cs D:\1.txt D:\My Pictures\A.jpg" -ci 导入备注。例如"jhead –ci D:\1.txt D:\My Pictures\A.jpg" -cl 直接输入备注。。例如"jhead –cl 我的备注 D:\My Pictures\A.jpg" 三、其他指令 时间日期 -ft 将jpeg文件的“修改时间”修改为exif信息中记录的时间。 -n[] 该指令会将文件名修改为exif信息中记录的“创建时间”;如果jpeg文件没有exif或者exif中的创建时间不可用,则将文件名修改为文件的“修改时间”。 默认的格式-顺序为MMDD-HHMMSS 格式-顺序参数如下: %d-日(01-31) %H-小时(00-23) %j-一年中的第几天(001-366) %m-月(01-12) %M-分钟(00-59) %S-秒(00-59) %U-一年中的第几周(00-53) %w-星期几(0-6,周日为0) %y-两位数纪年(00-99) %Y-四位数几年 %i-添加数字序号 例如: jhead -n%Y%m%d-%H%M%S d:\*.jpg 将所有jpg文件修改为YYYYMMDD-HHMMSS.jpg的格式。 -nf 与“-n”相同功能相同,不保留原文件名。 -a 修改不同扩展名的同名文件名,相机拍摄的avi短片exif信息存储在与其同名的thm文件中,可用此指令给avi文件更名。一般与“-n”指令共同使用。 -ta 修正时差,例如时差根据时区确定,例如+1:00或者-1:00 -da- 修正日期。日期格式是yyyy:mm:dd、yyyy:nn:dd+hh:mm或者 yyyy:mm:dd+hh:mm:ss。根据前后参数时间差调整exif的时间。 -ts 直接修改exif中的拍摄时间,日期-时间格式为yyyy:mm:dd-hh:mm:ss

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值