【问题标题】:Odoo 10 XMLRPC - Retrieve ImageOdoo 10 XMLRPC - 检索图像
【发布时间】:2018-02-28 21:13:57
【问题描述】:

我正在尝试从 XMLRPC 检索图像。

我愿意:

record = api.execute_kw(db, uid, pwd, 'product.template', 'read', [[id]], {'fields': ['id', 'name', 'image']})
sub_record = dict((k, record[0][k]) for k in ('id', 'name', 'image'))
print sub_record['image']

如果我使用print sub_record['image'] 打印图像,我会得到:

[...]
eSYH+sOdc3UW9XB1SzWvVCtcI0PfKdoYe9Suf/3116+mMGyhLTg/yedEprt6nOI3eNOxT9t6SzMN
Cj8tT5Lp9eqmsvmu1reytnROwdFvdWvkwsLihqqJ0+49ZW8nu9tzDb+RkT2f5tWpjpf8yZaJzyYW
SPN8f22Vnp9pr+mA7KzqwltQk8QGT02ViY6bpvBdTZqJH5uafxJcHFzPp8nB6KTYUlMq4jS3mAkm
[...]

所以基本上在图片base64字符串中间插入了几个回车。

如何使用该字符串在<img> html 标记中显示它?

我必须先删除这些回车吗?

【问题讨论】:

    标签: python xml-rpc odoo


    【解决方案1】:

    基本上你从 odoo 中得到 base64 字符串。您无需修改​​它,只需在 base64 字符串之前添加 data:image/jpeg;base64, 内容即可。现在您必须在图像标签中添加整个更新的字符串,如下所示。

    <img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
    AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
        9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
    

    另请查看此https://jsfiddle.net/Xadvz/7883/ 示例,其中我从演示产品“墨盒”的 base64 字符串创建图像以供进一步参考。

    希望对你有帮助!

    【讨论】:

    • 上面的代码我得到了带有 CR+LF 字符 (\n) 的 base64,并且它不被接受为 src。在将数据用作 src 之前,我必须删除那些 CR+LF (\n)。
    • 我看到了jsfiddle,我会尽量不去掉Odoo返回的CR+LF字符,看看会发生什么。
    【解决方案2】:

    您可以使用代码将 base64 数据保存到图像中。

    rec = models.execute_kw(db, uid, password, 'product.template', 'read', [[id]], {'fields': ['id', 'name', 'image']})
    img_data = rec[0]['image']
    data_id = rec[0]['id']
    fh = open("/tmp/product_image-%d.png" %(data_id), "wb") #you can use imghdr to identify the image type
    decoded = img_data.decode('base64')
    fh.write(decoded)
    fh.close()
    

    然后您可以编写代码以使用 标记中的文件路径。

    【讨论】:

    • 需要在html标签中使用,而不是存储到文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多