簡體   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