Odoo 10 XMLRPC - 检索图像

问题描述 投票:0回答:2

我正在尝试从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
2个回答
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”创建了图像,以供进一步参考。

我希望这能帮到您!


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()

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

© www.soinside.com 2019 - 2024. All rights reserved.