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

Odoo14社区版如何将image_1920等图片字节字段转换为Base64字符串?

解决Odoo14社区版image_1920字段转Base64字符串问题

核心原因:Odoo的Binary类型字段(包括image_1920)本身存储的就是经过Base64编码的字节流(bytes类型),你之前调用base64.b64encode(record.image_1920)属于重复编码,无法得到正确结果。

常规场景转普通Base64字符串

直接对字段值做UTF-8解码即可,注意先做非空判断避免异常:

if record.image_1920:
    base64_str = record.image_1920.decode('utf-8')
else:
    base64_str = ''

生成前端可用的图片Data URI

如果需要将字符串直接用于img标签的src属性,补充对应图片类型前缀即可:

if record.image_1920:
    # 可根据实际图片类型调整前缀中的image/png为image/jpeg等
    base64_str = f"data:image/png;base64,{record.image_1920.decode('utf-8')}"
else:
    base64_str = ''

从ir_attachment记录获取的场景

如果图片关联存储在ir_attachment中,先取对应attachment记录的datas字段再解码即可:

attachment = record.env['ir.attachment'].search([
    ('res_id', '=', record.id),
    ('res_model', '=', record._name),
    ('type', '=', 'binary')
], limit=1)
if attachment and attachment.datas:
    base64_str = attachment.datas.decode('utf-8')

注意事项

  • 所有解码操作前必须做非空判断,避免空值调用decode方法抛出异常
  • 若解码出现编码错误,可尝试添加errors='ignore'参数过滤异常字符,例如record.image_1920.decode('utf-8', errors='ignore')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:15:03