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

需求:将文件夹中多张JPG图片转Base64后合并为单个JSON文件

批量将JPG转Base64并合并为JSON的完整实现

你提供的代码已经有了核心思路,但有几个关键问题需要修正(比如空键名会覆盖数据、目录处理不够严谨),下面是完善后的完整代码,同时我会解释关键细节:

import base64
import json
import os

# 定义图片文件夹和输出JSON的路径
image_directory = 'C:/users/user/desktop/k-means/image'
output_json = 'C:/users/user/desktop/k-means/words.json'

# 存储所有图片的Base64数据,键用文件名区分
image_data = {}

# 遍历文件夹中的文件
for file_name in os.listdir(image_directory):
    # 只处理JPG/JPEG格式的图片
    if file_name.lower().endswith(('.jpg', '.jpeg')):
        # 拼接完整的文件路径,避免切换目录带来的问题
        full_path = os.path.join(image_directory, file_name)
        
        # 使用with上下文管理器自动关闭文件,更安全
        with open(full_path, 'rb') as img_file:
            # 读取图片字节并编码为Base64字符串
            img_bytes = img_file.read()
            base64_str = base64.b64encode(img_bytes).decode('ascii')
            
            # 用文件名作为JSON的键,这样后续能对应到具体图片
            image_data[file_name] = base64_str

# 将数据写入JSON文件,添加indent让格式更清晰
with open(output_json, 'w', encoding='utf-8') as json_file:
    json.dump(image_data, json_file, indent=4)

print(f"处理完成!已生成JSON文件:{output_json}")

关键改进说明:

  • 避免目录切换风险:原代码用os.chdir切换工作目录,后续操作容易出错。改用os.path.join拼接完整路径,更可靠。
  • 解决数据覆盖问题:原代码里data[""] = ...用空字符串作为键,每循环一次就会覆盖之前的数据,最终JSON里只会保留最后一张图片。现在用文件名作为键,所有图片数据都会被保留。
  • 使用推荐的编码方法:base64.encodestring是旧版API,现在官方推荐用base64.b64encode,功能一致但更规范。
  • 过滤图片格式:只处理JPG/JPEG文件,避免读取文件夹里的其他无关文件(比如临时文件、文档)。
  • 自动管理文件资源:用with语句打开文件,无需手动调用close(),防止资源泄漏。
  • 格式化JSON输出:indent=4让生成的JSON文件有缩进,可读性更强。

可选扩展:

  • 如果需要处理PNG、GIF等其他图片格式,只需修改后缀判断条件:file_name.lower().endswith(('.jpg', '.jpeg', '.png', '.gif'))
  • 如果要递归处理子文件夹里的图片,可以把os.listdir换成os.walk,遍历所有层级的文件:
    for root, dirs, files in os.walk(image_directory):
        for file_name in files:
            if file_name.lower().endswith(('.jpg', '.jpeg')):
                full_path = os.path.join(root, file_name)
                # 后续处理逻辑不变
    
  • 注意:Base64编码会让文件体积比原图片大大约30%,如果图片数量多或体积大,要考虑JSON文件的存储和传输成本。

内容的提问来源于stack exchange,提问作者이수진

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:36