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

Base64转图片触发UnidentifiedImageError错误,求解决方法

Base64转图片时UnidentifiedImageError的解决方法

问题代码

import base64
from PIL import Image as pl

file = open('C:\Users\test\Desktop\Sayac_Okuyucu\sayac_okuyucu\app\rawdata.txt', 'rb')
encoded_data = file.read()
file.close() # readind byte raw data 

b  = base64.b64decode(encoded_data)
val = io.BytesIO(b)
img = pl.open(fp=val, mode='r') # ERROR IS HERE
img.save("test.jpeg")

错误信息

已触发异常:UnidentifiedImageError
无法识别图片文件 <_io.BytesIO object at 0x0000012D61FB1CC0>

解决步骤

  • 补全缺失模块:代码使用了io.BytesIO但未导入io模块,需在开头添加import io
  • 修复路径转义问题:Windows路径中的反斜杠会被解析为转义字符(如\t),改用原始字符串或转义反斜杠:
    # 原始字符串写法
    file = open(r'C:\Users\test\Desktop\Sayac_Okuyucu\sayac_okuyucu\app\rawdata.txt', 'rb')
    # 或转义反斜杠写法
    file = open('C:\\Users\\test\\Desktop\\Sayac_Okuyucu\\sayac_okuyucu\\app\\rawdata.txt', 'rb')
    
  • 清理Base64数据:确保rawdata.txt中仅包含纯净的Base64编码内容,无换行、空格或data:image/jpeg;base64,这类前缀。若有前缀,需先截取编码部分:
    encoded_data = encoded_data.decode().split(',')[-1].encode()
    
  • 验证解码后的数据:先将解码后的字节直接写入文件,确认是否为有效图片:
    with open('test_raw.jpg', 'wb') as f:
        f.write(b)
    
    若该文件能正常打开,再尝试用PIL读取;若不能,说明Base64数据本身无效。

修正后的完整代码

import base64
import io
from PIL import Image as pl

# 使用原始字符串路径,同时用with语句自动管理文件
with open(r'C:\Users\test\Desktop\Sayac_Okuyucu\sayac_okuyucu\app\rawdata.txt', 'rb') as file:
    encoded_data = file.read()

# 处理可能存在的data URI前缀
encoded_str = encoded_data.decode().strip()
if encoded_str.startswith('data:image'):
    encoded_str = encoded_str.split(',')[-1]
encoded_data = encoded_str.encode()

# 解码并保存图片
b = base64.b64decode(encoded_data)
with io.BytesIO(b) as val:
    img = pl.open(val)
    img.save("test.jpeg")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:05:48