如何从odoo中的二进制图像获取完整路径
how to get full path from binary image in odoo
我想使用 PIL 函数 Image.open()
,但它只有在我将图像路径作为参数传递时才有效。我必须找到一种方法来获取此图像路径。我正在使用 widget='image'
和 odoo 8
图片存储在数据库中,base64编码。您必须自己将它们保存到文件中。
import tempfile
import base64
import os
from PIL import Image
from openerp import models, fields, api
from openerp.exceptions import UserError
class MyModel(models.Model):
[...]
image = fields.Binary()
@api.multi
def open_image(self):
self.ensure_one()
if not self.image:
raise UserError("no image on this record")
# decode the base64 encoded data
data = base64.decodestring(self.image)
# create a temporary file, and save the image
fobj = tempfile.NamedTemporaryFile(delete=False)
fname = fobj.name
fobj.write(data)
fobj.close()
# open the image with PIL
try:
image = Image.open(fname)
# do stuff here
finally:
# delete the file when done
os.unlink(fname)
我想使用 PIL 函数 Image.open()
,但它只有在我将图像路径作为参数传递时才有效。我必须找到一种方法来获取此图像路径。我正在使用 widget='image'
和 odoo 8
图片存储在数据库中,base64编码。您必须自己将它们保存到文件中。
import tempfile
import base64
import os
from PIL import Image
from openerp import models, fields, api
from openerp.exceptions import UserError
class MyModel(models.Model):
[...]
image = fields.Binary()
@api.multi
def open_image(self):
self.ensure_one()
if not self.image:
raise UserError("no image on this record")
# decode the base64 encoded data
data = base64.decodestring(self.image)
# create a temporary file, and save the image
fobj = tempfile.NamedTemporaryFile(delete=False)
fname = fobj.name
fobj.write(data)
fobj.close()
# open the image with PIL
try:
image = Image.open(fname)
# do stuff here
finally:
# delete the file when done
os.unlink(fname)