如何确定 tiff 是否以 bigtiff 格式编写

how to determine if a tiff was written in bigtiff format

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

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 header 的前几个字节来确定它是否是 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

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

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

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