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()
然后您可以编写代码以使用 标记中的文件路径。
我正在尝试从 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()
然后您可以编写代码以使用 标记中的文件路径。