一、TIFF 文件格式介绍
TIFF(Tagged Image File Format)是一种灵活的、适用于多种应用程序的图像存储格式。它不仅能描述扫描仪、图像采集卡及各类图像软件产生的图像数据,还通过统一的图像描述方式,为不同设备间的图像数据交换提供了便利。TIFF 定义了丰富的图像描述字段,但并非所有字段都是必需的,既适配复杂设备产生的图像,也能满足简单设备的图像存储需求。
二、TIFF 文件结构
TIFF 文件主要由三部分组成:文件头(IFH, Image File Header) 、文件目录(IFD, Image File Directory) 和 图像数据(Image Data),各部分分工明确、有机结合。
2.1 文件头(IFH)
- 大小:固定 8 个字节
- 核心作用:标识文件存储方式、验证文件类型、定位文件目录(IFD)位置
- 详细内容:
| 字节范围 | 内容说明 |
|---|---|
| 0~1 字节 | 存储标识 II 或 MM: - II:小端存储(低位字节存低地址,高位字节存高地址) - MM:大端存储(低位字节存高地址,高位字节存低地址) |
| 2~3 字节 | 固定值 42(十进制),用于校验文件是否为 TIFF 格式 |
| 4~7 字节 | IFD 地址偏移量:指向 IFD 在文件中的存储位置,便于快速定位 |

2.2 文件目录(IFD)
- 核心作用:通过一系列字段(field entries)描述图像属性(如图像宽高、分辨率、压缩方式等)
- 结构细节:
| 字节范围 | 内容说明 |
|---|---|
| 0~1 字节 | 字段数量:表示用于描述图像的属性种类数,支持用户自行扩展 |
| 后续 N×12 字节 | 每个属性占 12 字节,具体结构如下: - 0~1 字节:属性标签(Tag),标识字段类型(如宽度、高度、分辨率等) - 2~3 字节:数据类型(Type),如短整型(short)、长整型(long)、有理数型(rational)等 - 4~7 字节:数据个数(Count),表示该字段包含的数值数量 - 8~11 字节:属性值(Value/Offset),可能是直接存储的数值,也可能是指向数值存储位置的地址偏移量 |
| 最后 4 字节 | 下一个 IFD 地址:若文件包含多张图像,指向后续 IFD 位置;仅单张图像时,值为 0 |

2.3 图像数据(Image Data)
- 存储位置:无固定位置,可位于 IFH 与 IFD 之间,也可在 IFD 之后;支持连续存储或分散存储
- 存储形式:可压缩或未压缩,压缩方式由 IFD 中的相关字段指定

三、TIFF 内容示意图说明
3.1 结构关系示意


- IFH 固定位于文件开头,通过偏移量直接关联 IFD;
- IFD 中的每个字段通过标签和数据类型,精准描述图像的一项属性;
- 图像数据与 IFD 通过字段中的偏移量建立关联,无论存储位置如何,都能被准确读取。
3.2 具体示例示意
假设某单图像 TIFF 文件的核心结构分布:
- 0~7 字节(IFH):
II 42 00 00 00 14(小端存储,IFD 偏移量为 20 字节) - 20~31 字节(IFD):
00 05 ...(包含 5 个图像属性字段)- 字段 1(12 字节):标签
0100(图像宽度)、数据类型SHORT、数据个数1、值03E8(1000 像素) - 字段 2(12 字节):标签
0101(图像高度)、数据类型SHORT、数据个数1、值0258(600 像素) - 其余 3 个字段:分别描述分辨率、压缩方式、像素格式
- 字段 1(12 字节):标签
- 后续字节(图像数据):未压缩的 RGB 像素数据,按 IFD 字段定义的格式存储
四、总结
TIFF 文件格式的核心优势在于 灵活性与扩展性:
- 支持大端/小端两种存储方式,适配不同硬件架构;
- 图像描述字段可按需选择,既满足简单图像的轻量化存储,也能承载复杂图像的详细属性;
- 支持多种压缩方式和自定义字段扩展,广泛适配扫描、打印、图像编辑等不同应用场景。
正是这些特性,让 TIFF 成为图像存储与交换领域的经典格式,至今仍被广泛应用。