You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将PNG图片保存为指定格式JSON文件的技术问题

解决PNG转JPEG并生成指定格式JSON的问题

要满足你的需求,需要完成两个核心步骤:将PNG图片转换为JPEG格式,以及生成符合要求的data:image/jpeg;base64,...格式字符串,再序列化到JSON中。以下是具体解决方案:

1. 依赖安装

首先需要安装Pillow库来处理图片格式转换:

pip install pillow

2. 完整代码实现

import base64
import json
from PIL import Image
import io

# 读取PNG图片并转换为JPEG格式
with Image.open('example_png.png') as img:
    # 创建内存字节流存储JPEG数据
    img_byte_arr = io.BytesIO()
    # 转换为JPEG,PNG的透明通道会被转为白色背景
    img.convert('RGB').save(img_byte_arr, format='JPEG')
    # 获取JPEG字节数据
    img_data = img_byte_arr.getvalue()

# 对JPEG字节数据进行base64编码并转为字符串
enc_data = base64.b64encode(img_data).decode('utf-8')
# 拼接成要求的data URI格式
image_uri = f'data:image/jpeg;base64,{enc_data}'

# 保存到JSON文件
with open('example_png.json', 'w') as f:
    json.dump({'image': image_uri}, f)

问题解析

  • 原代码的问题:

    1. 直接编码PNG原始字节,未转换为JPEG格式,无法匹配data:image/jpeg前缀;
    2. 最初未将base64.b64encode返回的bytes对象解码为字符串,触发TypeError: Object of type bytes is not JSON serializable;
    3. 解码后仅生成纯base64字符串,缺少要求的data:image/jpeg;base64,前缀,导致格式不符合要求。
  • 注意事项:PNG图片可能包含透明通道,而JPEG不支持透明,代码中img.convert('RGB')会将透明区域默认填充为白色,若需要自定义背景色可额外处理。

内容的提问来源于stack exchange,提问作者YoungGun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:15:02