【问题标题】:how to determine if a tiff was written in bigtiff format如何确定 tiff 是否以 bigtiff 格式编写
【发布时间】:2021-02-21 06:56:27
【问题描述】:

并非所有图像阅读器都支持 BigTIFF,我想根据文件的 TIFF 格式来识别文件。如何确定现有 tiff 文件是以标准 TIFF 格式编写的,还是使用 BigTIFF 格式编写的?

【问题讨论】:

  • 您是否希望使用特定语言或在控制台/终端/等上执行此操作?
  • 我并没有被任何特定语言的方法所束缚,我只是想要一些我可以在大量文件上运行的东西。最后,我发现了一些在 python 中有效的东西,并且由于我没有看到任何其他涉及该主题的问题,因此将其发布为答案。
  • 哦,谢谢,我忘了我可以接受自己的答案。

标签: tiff libtiff


【解决方案1】:

python库tifffile读取TIFF文件,其中一个属性表示TIFF的格式。

filename = '/path/to/filename.tif'
import tifffile
def is_bigtiff(filename):
    with tifffile.TiffFile(f) as img:
        return img.is_bigtiff

tifffile 只是读取 tiff 标头的前几个字节以确定它是否是 BigTIFF,因此无需整个库即可轻松重新创建逻辑(我在查看库的源代码时才意识到这一点,并且以下是从中得出的)。

import struct

def is_bigtiff(filename):
    with open(filename, 'rb') as f:
        header = f.read(4)
    byteorder = {b'II': '<', b'MM': '>', b'EP': '<'}[header[:2]]
    version = struct.unpack(byteorder + "H", header[2:4])[0]
    return version == 43

【讨论】:

    【解决方案2】:

    您可以做的一件事就是简单地查看文件扩展名,因为 TIFF 规范说“不要将 .tif 用于 TIFF 6.0 文件以外的任何文件”(我的措辞,但它在那里)。

    哦等等,宇宙忽略了规范......

    您没有指定语言或工具包,因此以下是文件格式中的一些信息:请参阅 http://bigtiff.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2011-03-17
      相关资源
      最近更新 更多