希望所有堆叠成员都没问题。我可以使用代码
获取Product image的二进制数据p_ids=self.env.context.get('active_ids')
produtc_templates = self.env['product.template']
for p_id in p_ids:
binaryData = produtc_templates.search([('id', '=',p_id)]).image
data=base64.b64decode(binaryData)
file="marketplaces/rakuten_ftp/static/imageToSave_"+str(p_id)+".png"
with open(file, "wb") as imgFile:
imgFile.write(data)
上面的代码是从二进制数据创建文件但是我无法在mimetype base上应用条件。因为当我使用Products id查询ir_attachment表时它会返回False。
for p_id in p_ids:
attachments = self.env['ir.attachment']
mimetype=attachments.search([('res_id','=',p_id)])
我正在考虑res_id作为产品ID。但odoo未能找到任何针对该id的记录。所以如果有任何机构知道如何获取mimetype对我的产品ID那么请帮助我。
答案 0 :(得分:3)
您的代码看起来不错!但是根据datas
对象,二进制数据存储在product_image = self.env['ir.attachment']
product_images = product_image.search([('id', 'in', p_ids)])
for rec in product_images:
with open("imageToSave.jpg", "wb") as imgFile:
imgFile.write(base64.b64decode(rec.datas))
字段中。因此,您可以使用该数据将二进制数据解码为图像文件!!
已在下面的代码中尝试过 Odoo v11 ...&它是从二进制数据创建的新图像文件,存储在mimetype
字段中!
p_ids
您还可以添加mimetype
的条件,因为image/jpeg
可以包含多个ID,因此请仅使用image/png
Odoo v11.0
或import base64
from odoo.tools.mimetypes import guess_mimetype
p_ids = [16, 18, 11, 38, 39, 40] # Taking random ids of product.template
produtc_templates = self.env['product.template']
for p_id in p_ids:
binary_data = produtc_templates.search([('id', '=', p_id)]).image
mimetype = guess_mimetype(base64.b64decode(binary_data))
file_path = ""
if mimetype == 'image/png':
file_path = "/home/Downloads/" + str(p_id) + ".png"
elif mimetype == 'image/jpeg':
file_path = "/home/Downloads/" + str(p_id) + ".jpeg"
if file_path:
with open(file_path, "wb") as imgFile:
imgFile.write(base64.b64decode(binary_data))
的ID }
下面的代码段已经使用$ sed -i 's/ he/ she/g' S13a4sed
sed: illegal option -- i
.slider {
z-index:1;
margin-top:200px;
position:relative;
}
.carousel-inner {
transform: skewy(-190deg);
height:500px;}
.carousel-inner img {
transform: skewy(13deg);
height: 1000px !important;
margin-top: -191px;}
.slider-2 {
position:absolute;
transform:rotate(-15deg);
z-index:-2;
width:970px;
top:115px;
height:650px !important;
background-color:#e2e2e2;
margin-left:30px;
transform: skewy(-190deg);}
.carousel-indicators {
bottom:-90px;
transform: rotate(-10deg );}
.carousel-indicators li {
border-color:#152b46;}
.carousel-indicators .active {
background-color:#152b46;}
答案 1 :(得分:1)
产品图片不会保存为ir.attachment
的实例/记录。好吧,也许这已经改变了,但我找不到任何快速的东西。
您可以做的是使用ir.attachment
的方法_compute_mimetype()
以下示例未经过测试:
def get_mimetype_of_product_image(self, product_id)
product = self.env['product.product'].browse(product_id)
mimetype = self.env['ir.attachment']._compute_mimetype(
{'values': product.image})
return mimetype