Tiff 与 BigTiff

And*_*hum 4 tiff

请告诉我是否有另一个 Stack Exchange 社区更适合这个问题。

我试图了解 Tiff 和 BigTiff 之间的基本区别。我查看了各个站点,提到的唯一区别是 BigTiff 使用 64 位偏移量,而 Tiff 使用 32 位偏移量。话虽这么说,您需要知道您正在阅读两种类型中的哪一种。这是怎么做到的?根据https://www.leadtools.com/help/leadtools/v19/main/api/tifffmt.html,这是通过读取文件标志来完成的。然而,他们所指的标志似乎对他们自己的读者来说是唯一的,因为我在http://www.fileformat.info/format/tiff/egff.htm所示的规范中找不到相应的数据字段。我缺少什么?BigTiff 使用与 Tiff 不同的文件头吗?

har*_*ldK 8

@cgohlke 发布的BigTIFF 链接中描述了您需要了解的所有内容,但为了提供答案,这里有一个快速摘要:

是的,它使用不同的文件头。

普通TIFF使用以下标头:

  • 2 字节字节顺序标记,“II”表示“Intel”/little endian,或“MM”表示“Motorola”/big endian。
  • (版本)号 42* 作为 16 位值,采用给定的字节序。
  • IFD0 的无符号 32 位偏移量

BigTIFF使用略有不同的标头:

  • 2字节字节顺序标记如上
  • (版本)号 43 作为 16 位值,采用给定的字节序。
  • 偏移量的字节大小为 16 位值,对于 BigTIFF 始终为 8
  • 2 字节填充,对于 BigTIFF 始终为 0
  • IFD0 的无符号 64 位偏移量

*) 选择值 42 是因为它具有“深刻的哲学意义”。或者根据官方规范,“任意但精心选择的数字” ......