假设我有一个图像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 秒后再次保存,这两个文件的哈希值将不同。
另请参阅此处和此处。