EXIF格式分析及通过XML处理(2)

原创 2004年05月09日 11:09:00

 

EXIF格式分析及通过XML处理<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

猛禽[Mental Studio](个人专栏)(BLOG)

http://mental.mentsu.com

 

起始

长度(Bytes)

内容

0x00

2

Number of Directory Entries(Count)

0x02

12 * Count

Directory Entries

2 + 12 * Count

4

Offset of next IFD

4IFD格式定义

 

每个IFD由三个部分组成,如表4所示,包括:Number of Directory EntriesDirectory EntriesOffset of next IFD。其中Number of Directory Entries指定在Directory Entries中包含多少个EntryDirectory Entries是一个数组,包含若干个Directory Entry。最后的Offset of next IFD即是下个IFD所在的位置,如果此项为0,则表示这是链表中的最后一个IFD

 

起始

长度(Bytes)

内容

0x00

2

Tag

0x02

2

Type

0x04

4

Size

0x08

4

Value

5IFD Entry格式定义

 

IFD Entry是一个12字节长的结构,如表5所示。正如TIFF的名称所说的那样:A tag-based file format for storing and interchanging raster images[2]。所有的IFD Entry都是通过Tag来标识的,每一个Tag都是一个WORD类型的数值,每个数值有其特定的含义。如0x0131这个Tag表示此Entry记录的是生成此TIFF文件的软件名等。具体每个Tag的含义可能查阅TIFF的规范文档[2]EXIF只用到了其中部分Tag,另外还扩充了三个Tag用于链接EXIF的三个扩充IFD,这些在EXIF的规范文档中有说明[1]

IFD Entry中的Type是指明此Entry中记录的数据类型,TIFF规范只定义了五种类型,EXIF增加了三种。各类型说明如表6所示:

 

Type

类型

Size

Value

1

BYTE

1

字节数据,Size一般为1

如果Size大于4,则Value为其位置

2

ASCII

n

一个ASCIIZ的字符串,Size为串长度,包括结尾的NULL字符

Size小于等于4则直接存放在Value

Size大于4,则在Value中指定其位置

3

SHORT

1

无符号短整数,Size一般也为1

如果Size大于2,则Value为其位置

4

LONG

1

无符号长整数,Size一般也是1

5

RATIONAL

1

有理数,TIFF是用分数的形式来表达,用了两个LONG类型的数据,前一个LONG为分子,后一个LONG为分母,Size一般也是1

因为一个RATIONAL类型包含两个LONG,无法记录在Value中,所以Value中记录的是这个RATIONAL数所在的位置(从TIFF Header开始的偏移)

以上为TIFF定义的类型,以下为EXIF扩展定义类型

7

UNDEFINED

n

任意的字节数据,根据具体情况定义

Size小于等于4则直接存放在Value

Size大于4,则在Value中指定其位置

9

SLONG

1

有符号长整数,与LONG类似,以2的补码形式表示

10

SRATIONAL

1

有符号有理数,与RATIONAL类似,不过是用两个SLONG来表示

6Type定义

 

关于Value的内容有一点要注意的是,它可能是数据本身,也可能是数据存放位置的偏移,这取决于TypeSize的大小。数据存放位置都是从TIFF Header开始计算的偏移量。

有一点要注意的是:EXIF的三个扩充IFD Tag也是LONG类型,它记录的是相应IFD的起始位置(从TIFF Header开始的偏移)。在扩充IFD中用到的Tag全部是EXIF重新定义的。

(待续)

EXIF格式分析及通过XML处理(4)

EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 下面的代码片断(Borland C++ Builder)实...
  • Raptor
  • Raptor
  • 2004年05月09日 11:10
  • 3056

EXIF格式分析及通过XML处理(1)

EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 随着数码相机的普及,EXIF已经被大多数图像处理软件所支持...
  • Raptor
  • Raptor
  • 2004年05月09日 11:10
  • 5402

EXIF格式分析及通过XML处理(3)

EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 下面是一个典型的EXIF JPEG文件格式分析结果(源文件...
  • Raptor
  • Raptor
  • 2004年05月09日 11:10
  • 4012

EXIF格式分析及通过XML处理(5)

EXIF格式分析及通过XML处理 猛禽[Mental Studio](个人专栏)(BLOG)http://mental.mentsu.com 转换后的XML大致如下:  Exif      II   ...
  • Raptor
  • Raptor
  • 2004年05月09日 11:10
  • 2984

jpg文件格式分析

JPEG格式格式:JFIF(JPEG档的交换格式)压缩:JPEG(灰阶影像压缩比约为10:1;彩色影像约为20:1)以JPEG文件格式保存的图像实际上是2个不同格式的混合物:JPEG格式规范本身,用来...
  • bluesky_sunshine
  • bluesky_sunshine
  • 2011年02月13日 19:39
  • 9728

Exif格式分析

大概翻译了一下,非常的粗糙,慢慢修正。请高手自动飘过~因为做图像压缩时会损失相机写入的如光圈、快门等信息,所以自己写了个图像压缩小玩意,顺便研究了一下Exif。原文地址:Exif file forma...
  • lsiyun
  • lsiyun
  • 2010年03月04日 17:36
  • 8898

提取Exif信息中GPS经纬度,转化为double方法

我用的是网上的一个叫DealExif的CPP文件(可以自行去网上下载),使用它的方法阅读JPG图片的Exif信息。完整过程如下: 1、引入DealExif头文件。 2、 在合适的位置加入两行代码 ...
  • zby22013
  • zby22013
  • 2013年07月22日 22:28
  • 2447

JPEG系列二 JPEG文件中的EXIF(下)

本文介绍EXIF中都保存了哪些数据,这些数据的内容和格式,最后介绍一下EXIF中的缩略图信息。 EXIF JPEG文件将EXIF信息存储在JFIF的APP1标记中。 EXIF主要保存拍摄照片时的相机...
  • shelldon
  • shelldon
  • 2017年01月13日 12:52
  • 2512

jpg图片的Exif及gps信息和示例分析

转自:http://www.verydemo.com/demo_c173_i10439.html jpg图片的Exif及gps信息和示例分析 分类: 操作系...
  • yapingmcu
  • yapingmcu
  • 2016年02月05日 17:24
  • 7855

20170227. EXIF信息的说明(opencv320 ApplyExifOrientation)

在opencv3.2.0中,对imread函数做了修改 Mat imread( const String& filename, int flags ) { /// create the ba...
  • u014488388
  • u014488388
  • 2017年02月27日 16:00
  • 245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EXIF格式分析及通过XML处理(2)
举报原因:
原因补充:

(最多只允许输入30个字)