我有一张我在PIL上旋转了0度的图像,确切的命令是:
image = Image.open("filename.jpg")
rotated = image.rotate(0,expand=True)
rotated.save("filename2.jpg")
这两个图像的base64甚至sha1哈希是完全不同的。如果旋转角度为0,为什么会发生这种情况?
答案 0 :(得分:3)
由于jpg
为lossy,只需打开jpg
文件并再次保存,就会导致信息丢失和散列不同。
使用png
,只要没有更新其他信息(例如带有修改时间的标题),您就可以获得完全相同的文件。在0°旋转后,像素不会被修改,但即使图像本身未被触摸,压缩算法也可能产生不同的二进制文件。
要调试此行为,您可以使用bmp
文件进行尝试,再次保存而不进行旋转,再次使用旋转保存并检查哈希值。