[英]How to properly encode and decode base64 image to get exact same image with python?
I am missing something during the operation because the images are not the same (though it is visually not possible to see a difference). 手术期间我遗漏了一些东西,因为图像不一样(尽管在视觉上看不到差异)。
MWE: 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
I finally sorted that out thanks to @Idlehands comment. 我终于通过@Idlehands评论将其整理出来。 Image.open(...)
already altered the binary content. Image.open(...)
已更改二进制内容。
A working solution: 一个可行的解决方案:
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.