唯一图像哈希,不随EXIF信息更新而改变

3 投票
2 回答
2812 浏览
提问于 2025-04-17 09:00

我想在Python和PHP中为图片创建一个独特的哈希值。

我考虑过使用md5值来处理原始文件,因为生成这些值的速度很快。但是,当我更新EXIF信息(有时候时区会不对)时,哈希值就会改变。

有没有其他方法可以为这些文件创建哈希值,这样在更新EXIF信息时哈希值不会改变?效率也是个问题,因为我需要为大约50万个30MB的图片生成哈希值。

也许可以找到一种方法来生成图片的md5哈希,排除掉EXIF部分(我觉得EXIF信息是写在文件开头的?)提前谢谢你。如果有示例代码就更好了。

2 个回答

2

Imagemagick已经提供了一种获取图像签名的方法。根据PHP文档的说明:

它会为图像的像素流生成一个SHA-256的消息摘要。

所以我理解的是,签名不会受到exif信息变化的影响。

另外,我也确认了PythonMagick.Image.signature这个方法在Python的绑定中是可以用的,所以你可以在这两种语言中都使用它。

1

在Python中,你可以使用 Image.tostring() 这个方法来计算图像数据的md5哈希值,这个计算是只针对图像本身的数据,而不包括任何附加的信息(也就是元数据)。

import Image
import hashlib

img = Image.open(filename).convert('RGBA')
m=hashlib.md5()
m.update(img.tostring())
print(m.hexdigest())

撰写回答