как определить, написан ли tiff в формате bigtiff - PullRequest
0 голосов
/ 27 февраля 2020

BigTIFF поддерживается не всеми программами чтения изображений, и я хотел бы идентифицировать файлы на основе их формата TIFF. Как я могу определить, был ли существующий файл TIFF записан в стандартном формате TIFF, или вместо этого используется формат BigTIFF?

1 Ответ

1 голос
/ 27 февраля 2020

Библиотека 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, поэтому логический c легко воссоздать без всей библиотеки (что я только что понял глядя на источник для библиотеки, и из которого взято следующее).

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
...