Python MultiTIf 中第一个图像的哈希值

Python Hash of First Image in MultiTIf

我正在尝试获取 Multi-TIf 第一页的哈希 MD5。我可以得到下面 A.tiff 的哈希值,但是如何只读取第一页的哈希值?

import hashlib

print(hashlib.md5(open('c:\temp\HASH\A.tif','rb').read()).hexdigest())

类似以下内容可能会有所帮助。您可以使用支持多页 TIFF 文件的 PIL 库。这样就可以使用seek()获取第一页数据:

import hashlib
from PIL import Image
from itertools import chain

img = Image.open(r'A.tif')
img.seek(0)

md5 = hashlib.md5()

if isinstance(img.getpixel((0,0)), int):
    md5.update(bytes(img.getdata()))
else:
    md5.update(bytes(chain.from_iterable(img.getdata())))

print(md5.hexdigest())

对于大多数图像,这将提供一个元组,对于单色/灰度图像,它将提供 returns 值。这些都转换为字节和 运行 到 md5.update().