如何确定 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
并非所有图像阅读器都支持 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