admin管理员组

文章数量:1597857

2024年3月19日发(作者:)

TIF

图像数据结构之解析

为图像文件格式,此图像格式复杂,存储内容多,占用存储空间大,其大小是GIF图

像的3倍,是相应的JPEG图像的10倍,最早流行于Macintosh,现在Windows主流的

图像应用程序都支持此格式。

TIF文件格式最早是为了存储扫描仪图像而设计的。它的最大的特点就是与计算机的结

构、操作系统以及图形硬件系统无关。它可处理黑白、灰度、彩色图像。在存储真彩色图像

时和BMP格式一样,直接存储RGB三原色的浓度值而不使用彩色映射(调色板)。对于

介质之间的交换,TIF称得上是位图格式的最佳选择之一。

TIF的全面性也产生了不少问题,它的包罗万象造成结构较为复杂,变体很多,兼容性

较差,它需要大量的编程工作来全面译码。例如,TIF图像数据可以用几种不同的方法压缩,

用一个程序来读出所有的TIF几乎是不可能的。

TIF图一般由三个部分组成:文件头(简称IFH)、文件目录(简称IFD)、图像数据。

一、图像文件头(Image File Header)

IFH数据结构包含3个成员共计8个字节(见表一):

表一 IFH结构描述

------------------------------------------------------------

名称 字节数 数据类型 说明

------------------------------------------------------------

Byteorder 2 Integer TIF标记,其值为4D4D或4949

Version 2 Integer 版本号,其值恒为2A00

Offset to first IFD 4 Long 第一个IFD的偏移量

------------------------------------------------------------

表一说明

der:可能是H4D4D或H4949,H4D4D表示该图是摩托罗拉整数格式,H4949

表示该图是Intel整数格式。

n:总是H2A00,它可能是tif文件的版本,也可能用于进一步校验该文件是否

为TIF格式。

to first IFD:第一个IFD相对文件开始处的偏移量(因为可能会有多个顺序排

列的IFD)。

IFD数据结构并不一定紧跟在IFH后面,相反,它常常位于第三部分图像数据的后面,

即TIF图像文件的一般组织形式是:IFH——图像数据——IFD。

二、图像文件目录(Image File Directory)

IFD是TIF图像文件中重要的数据结构,它包含了三个成员。由于一个TIF文件中可以

有多个图像,而一个IFD只标识一个图像的所有属性(有的文章把“属性”称之为“标签”),

所以,一个TIF文件中有几个图像,就会有几个IFD。IFD的结构见表二:

表二 IFD结构描述

-----------------------------------------------------------------

名称 字节数 数据类型 说明

-----------------------------------------------------------------

Directory Entry Count 2 Integer 本IFD中DE的数量

Directory Entry(1) 12 简称DE,中文译义“目录项”

Directory Entry(2) 12

……

Directory Entry(N) 12

Offset to next IFD 4 Long 下一个IFD的偏移量

-----------------------------------------------------------------

表二说明

ory Entry Count:指出在该IFD中DE的个数;

ory Entry:共12个字节,结构见表三。需要指出的是,DE的个数是不定的,

因为每个DE只标识了图像的一个属性,那么这幅图像有N个属性就会有N个DE,用户甚

至可添加自定义的标记属性,这就是为什么称TIF格式文件为“可扩充标记的文件”的原因。

to next IFD Or NULL:下一个IFD相对于文件开始处的位置,这是一个链式构

成。如果该数字为0,表示已经是最后一个IFD。当然,如果该TIF文件只包含了一幅图像,

那么就只有一个IFD,显然这个偏移量也会等于0。

表三 DE结构描述

--------------------------------------------------

名称 字节数 数据类型 说明

--------------------------------------------------

tag 2 Integer 本属性的标签编号

type 2 Integer 本属性值的数据类型

本文标签: 图像文件属性数据结构