Odoo 10 XMLRPC - 检索图像

Odoo 10 XMLRPC - Retrieve Image

我正在尝试从 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字符串中间插入了几个回车returns

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

我必须先删除这些马车 returns 吗?

基本上你从 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/ 示例,其中我从演示产品 "Ink Cartridge" 的 base64 字符串创建图像以供进一步参考。

希望对您有所帮助!

您可以使用代码将 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()

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