如何使用python查找tiff文件中存在的图像页面的原始格式?

问题描述

我有一个多页 tiff 文件 (merged.tiff),我需要从中提取原始格式的单个图像。 PIL 允许您遍历页面并以我需要的格式 (png/jpg) 将它们写入磁盘。 例如:

from PIL import Image
img = Image.open('merged.tiff')
for i in range(img.n_frames):
    try:
        img.seek(i)
        img.save(f'individual_{i}.jpg')
        img.save(f'individual_{i}.png')
    except EOFError:
        break

但是有没有办法知道这些图像的原始格式? 我曾尝试使用 tifffiletiffany,它们允许我将页面转换为 numpy 数组,然后作为图像写入磁盘,但它们不允许我知道图像的源格式包含在 TIFF 文件中。

解决方法

在大多数情况下,我认为这是不可能的,因为将 JPEG 图像作为未压缩的 RGB 数组包含在 TIFF 文件中是完全可行的。

不过,实际上,您应该能够查看 TIFF 文件的一些标签,例如压缩,对图像曾经是什么进行有根据的猜测。 tiffinfo 和 tiffdump(来自 libtiff 包)等工具可用于检查 TIFF 文件。