【问题标题】:Why is image saved by PIL have different md5 sum compared with the original image为什么PIL保存的图像与原始图像相比具有不同的md5和
【发布时间】:2019-09-09 12:56:03
【问题描述】:

假设我有一张图片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 保存,我还有原始图像吗?

【问题讨论】:

  • 我的回答或其他人是否解决了您的问题?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步为您提供帮助。谢谢。 meta.stackexchange.com/questions/5234/…

标签: python computer-vision python-imaging-library jpeg


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    另请参阅herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2021-05-11
      相关资源
      最近更新 更多