Skip to content
Snippets Groups Projects
Commit f33166d2 authored by Preksha Chouhan's avatar Preksha Chouhan
Browse files

[FIX] web_editor: convert color opacity to be compatible with PIL Image color


ValueError 'unknown colour specifier' occurs when we access
export_icon_to_png(). This error occurs when we change the colour of an
icon in the mailing template, because the value of alpha (opacity) in 'rgba'
is in the range of 0 to 1, but PIL Image support colour opacity range 0 to 255.

This commit converts the opacity value range (0 to 1) to a range (0 to 255)
compatible with the PIL image library when the colour specifier is 'rgba'.

sentry - 3933353285

closes odoo/odoo#121516

X-original-commit: a5418770
Signed-off-by: default avatarDavid Monjoie (dmo) <dmo@odoo.com>
parent 8e37dcee
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,7 @@ import werkzeug.urls
from PIL import Image, ImageFont, ImageDraw
from lxml import etree
from base64 import b64decode, b64encode
from math import floor
from odoo.http import request, Response
from odoo import http, tools, _, SUPERUSER_ID
......@@ -110,6 +111,13 @@ class Web_Editor(http.Controller):
bg = bg.replace('rgba', 'rgb')
bg = ','.join(bg.split(',')[:-1])+')'
# Convert the opacity value compatible with PIL Image color (0 to 255)
# when color specifier is 'rgba'
if color is not None and color.startswith('rgba'):
*rgb, a = color.strip(')').split(',')
opacity = str(floor(float(a) * 255))
color = ','.join([*rgb, opacity]) + ')'
# Determine the dimensions of the icon
image = Image.new("RGBA", (width, height), color)
draw = ImageDraw.Draw(image)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment