与原始图像相比,旋转 0 度的图像具有不同的 base64

Image rotated by 0 degrees has a different base64 compared to the original image

我有一张图片,我在 PIL 上旋转了 0 度,确切的命令是:

image = Image.open("filename.jpg")
rotated = image.rotate(0,expand=True)
rotated.save("filename2.jpg")

这两个图像的 base64 甚至 sha1 哈希值都大不相同。如果旋转角度为0,为什么会出现这种情况?

因为 jpglossy,仅仅打开一个 jpg 文件并再次保存它会导致信息丢失和不同的散列。

使用 png,只要不更新其他信息(例如 header 和修改时间),您可能会得到完全相同的文件。旋转 0° 后像素不会被修改,但压缩算法可能会产生不同的二进制文件,即使图像本身没有被触摸。

要调试此行为,您可以尝试使用 bmp 文件,不旋转再次保存,旋转再次保存并检查哈希值。