繁体   English   中英

如何使用python正确编码和解码base64图像以获得完全相同的图像?

[英]How to properly encode and decode base64 image to get exact same image with python?

手术期间我遗漏了一些东西,因为图像不一样(尽管在视觉上看不到差异)。

MWE:

import base64
from io import BytesIO

from PIL import Image

image = Image.open('image.jpg')
buffered = BytesIO()
image.save(buffered, format="JPEG")
image_content = base64.urlsafe_b64encode(buffered.getvalue())

image_decoded = Image.open(BytesIO(base64.urlsafe_b64decode(image_content.decode())))

print(image == image_decoded)
# return False
print(np.array(image).sum() == np.array(image_decoded).sum())
# return False

我终于通过@Idlehands评论将其整理出来。 Image.open(...)已更改二进制内容。

一个可行的解决方案:

import base64

from PIL import Image

with open('image_name.jpg', 'rb') as image_file:
    image_byte = image_file.read()
    image_base64 = base64.urlsafe_b64encode(image_byte)

with open('test.jpg', 'wb') as image_file:
    image_file.write(base64.urlsafe_b64decode(image_base64))


image = Image.open('image_name.jpg')
image_decoded = Image.open('test.jpg')
image == image_decoded

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM