1. 概述
TIFF 文件格式使用32位的偏移量(单位为字节),因此其文件大小最大不能超过4GB(2^32 Byte),在处理巨大图像或者非常大的图像集合时,该文件格式是不支持的,因此才会出现 BigTIFF 文件格式。BigTIFF 文件格式使用64位偏移量,理论上最大可支持16 EB 的文件尺寸(2 ^ 64 Byte),其结构与 TIFF 文件结构类似,扩展名同样为 .tif 或者 .tiff。
2. 文件结构
2.1 IFH
与 TIFF 格式类似,BigTIFF 格式也是以 IFH 开头,相对于 TIFF 的8个字节,BigTIFF 的 IFH 占用16个字节,其中:
- 第0-1字节:与 TIFF 一致,也是表示字节顺序标志位,可选值也是包括 II 和 MM。
- 第2-3字节:与 TIFF 一致,也是表示格式表示,其值固定为
2B00,读取值为002B,十进制为43,为 BigTIFF 格式的固定值。 - 第4-5字节:固定值为8。
- 第6-7字节:固定值为0。
- 第8-15字节:表示第一个 IFD 的偏移量,也是指针对文件开头的偏移量。
2.2 IFD
与 TIFF 格式一样,IFH 中的最后一个都是指向第一个 IFD,该 IFD 可能位于文件中的任何位置,并且,多页 TIFF 中的每个“页面”均由一个 IFD 表示。BigTIFF 文件格式的 IFD 的结构与 TIFF 类似,也是包含3部分,依次为包含多少个 DE、DE 的详细以及下一个 IFD 的偏移量,不同的是,每个部分占用的空间大小与 TIFF 格式不一致。
BigTIFF 格式 IFD 的结构如下:
- 第0-7字节:表示当前 IFD 包含多少个 DE,上图中表示该 IFD 有 x 个 DE。
- 第8 - (x*20):该 IFD 的 DE 的详细描述,每个 DE 占用20个字节。
- 最后8个字节:表示下一个 IFD 的偏移量,如果没有则设置为0。
2.3 DE
与 TIFF 格式一样,BigTIFF 文件格式的 DE 也包含4部分,具体如下:
- 第0-1字节:当前 TAG 的唯一标识。
- 第2-3字节:表示数据类型。
- 第4-11字节:表示数量。通过类型和数量可以确定存储此 TAG 的数据所需要占据的字节数量。
- 第12-19字节:如果占用的字节数少于 8,则数据直接存在于此。如果超过8个,则这里存放的是指向实际数据的指针。