Odoo 10 XMLRPC - 检索图像

时间:2018-02-28 21:13:58

标签: python xml-rpc odoo

我正在尝试从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标记中显示它?

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

2 个答案:

答案 0 :(得分:2)

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

我希望这会对你有所帮助!

答案 1 :(得分:0)

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

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