我正在尝试从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标记中显示它?
我必须先删除这些回车吗?
答案 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()
之后您可以编写代码以使用 标记中的文件路径。