提问人:YoungGun 提问时间:11/4/2023 更新时间:11/4/2023 访问量:74
在 python 中将 png 图像保存到 json 文件 [重复]
Saving a png image to json file in python [duplicate]
问:
我需要在 python 中将 png 图像保存到 json 文件中。此外,json 文件的开头必须如下所示:
{"image":"data:image/jpeg;base64,/etc.
我怀疑这意味着我还需要将其转换为jpeg格式。
这是我到目前为止尝试过的:
import base64, json
filename = 'example_png.png'
f = open(filename, 'rb')
img_data = f.read()
f.close()
enc_data = base64.b64encode(img_data)
json.dump({'image':enc_data}, open('example_png.json', 'w'))
这导致了以下错误:TypeError: Object of type bytes is not JSON serializable
我还玩过解码。例如,我添加了
enc_data = enc_data.decode('utf-8')
在保存到 JSON 文件之前。然后将某些内容保存到文件中,但显然格式不正确。
如果有任何帮助,我将不胜感激。
答:
1赞
Andrej Kesely
11/4/2023
#1
尝试:
import base64
import json
filename = "your_image.png"
with open(filename, "rb") as f_in, open("example_png.json", "w") as f_out:
enc_data = base64.b64encode(f_in.read()).decode("utf-8")
json.dump({"image": f"data:image/png;base64,{enc_data}"}, f_out)
编辑:要将图像转换为Jpeg并将其保存到Json,您可以使用模块:Pillow
import base64
import json
from io import BytesIO
from PIL import Image
filename = "<your image.jpg|png>"
with open("example_png_jpeg.json", "w") as f_out:
png_image = Image.open(filename)
jpg_buffer = BytesIO()
png_image.save(jpg_buffer, format="JPEG")
enc_data = base64.b64encode(jpg_buffer.getvalue()).decode("utf-8")
json.dump({"image": f"data:image/jpeg;base64,{enc_data}"}, f_out)
评论
1赞
Andrej Kesely
11/4/2023
@MarkSetchell我已经更新了我的 anwer。
1赞
YoungGun
11/4/2023
谢谢!我收到一条错误消息,但添加了以下行:if png_image.mode != 'RGB': png_image = png_image.convert('RGB'),然后它起作用了!
评论
b64encode()
{"image": "iVBORw..."}