为什么太平船务保存的图像与原始图像相比具有不同的md5总和



假设我有一个图像pic.jpg。我阅读了图像,然后保存了它。

from PIL import Image
im = Image.open('pic.jpg')
im.save('pic1.jpg', 'jpeg')

两张图片的 md5 总和不同:

$ md5sum pic.jpg
3191102e44fa5ebbb2aa52e042066dad
$ md5sum pic1.jpg
a6b17e3af3ff66715a2326db33548d11

如果我读取并使用PIL保存,我是否仍然拥有原始图像?

经过一些比较,似乎 PIL 重新压缩了图像(所有二进制数据都不相同(,标题也发生了变化(对我来说,Adobe 标题、标题和作者在这里,但消失了(。
如果你要做一些比较,你可以做:

xxd pic.jpg > pic.hex
xxd pic1.jpg > pic1.hex
diff pic.hex pic1.hex

不,JPEG 是有损的。它会丢弃信息以使您的图像更小。不同的编码器/解码器(即写入器/读取器(丢弃不同的信息并选择不同的质量设置。

如果您希望能够保存和重新加载图像并且图像相同,则需要使用无损格式,例如 PNG。

即便如此,您的图像也可能包含日期和时间,因此,如果您加载或创建图像并保存它,然后在 2 秒后再次保存,这两个文件的哈希值将不同。

另请参阅此处和此处。

最新更新