问题描述
我有一个多页 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
但是有没有办法知道这些图像的原始格式?
我曾尝试使用 tifffile
和 tiffany
,它们允许我将页面转换为 numpy 数组,然后作为图像写入磁盘,但它们不允许我知道图像的源格式包含在 TIFF 文件中。
解决方法
在大多数情况下,我认为这是不可能的,因为将 JPEG 图像作为未压缩的 RGB 数组包含在 TIFF 文件中是完全可行的。
不过,实际上,您应该能够查看 TIFF 文件的一些标签,例如压缩,对图像曾经是什么进行有根据的猜测。 tiffinfo 和 tiffdump(来自 libtiff 包)等工具可用于检查 TIFF 文件。