与原始图像相比,旋转 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,为什么会出现这种情况?
因为 jpg
是 lossy,仅仅打开一个 jpg
文件并再次保存它会导致信息丢失和不同的散列。
使用 png
,只要不更新其他信息(例如 header 和修改时间),您可能会得到完全相同的文件。旋转 0° 后像素不会被修改,但压缩算法可能会产生不同的二进制文件,即使图像本身没有被触摸。
要调试此行为,您可以尝试使用 bmp
文件,不旋转再次保存,旋转再次保存并检查哈希值。
我有一张图片,我在 PIL 上旋转了 0 度,确切的命令是:
image = Image.open("filename.jpg")
rotated = image.rotate(0,expand=True)
rotated.save("filename2.jpg")
这两个图像的 base64 甚至 sha1 哈希值都大不相同。如果旋转角度为0,为什么会出现这种情况?
因为 jpg
是 lossy,仅仅打开一个 jpg
文件并再次保存它会导致信息丢失和不同的散列。
使用 png
,只要不更新其他信息(例如 header 和修改时间),您可能会得到完全相同的文件。旋转 0° 后像素不会被修改,但压缩算法可能会产生不同的二进制文件,即使图像本身没有被触摸。
要调试此行为,您可以尝试使用 bmp
文件,不旋转再次保存,旋转再次保存并检查哈希值。