[FIX] image tools: do not crop an image when resizing it, use reduce the size instead and add transparency background (opw 593992)
bzr revid: mat@openerp.com-20140212155104-zc6hhkzqw6711e9m
This commit is contained in:
parent
c438e6e8a9
commit
94b3b0d6f6
|
@ -23,7 +23,7 @@ import io
|
||||||
import StringIO
|
import StringIO
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from PIL import ImageOps
|
from PIL import ImageEnhance
|
||||||
from random import random
|
from random import random
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
@ -79,8 +79,13 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
|
||||||
return base64_source
|
return base64_source
|
||||||
|
|
||||||
if image.size <> size:
|
if image.size <> size:
|
||||||
# If you need faster thumbnails you may use use Image.NEAREST
|
# create a thumbnail: will resize and keep ratios, then sharpen for better looking result
|
||||||
image = ImageOps.fit(image, size, Image.ANTIALIAS)
|
image.thumbnail(size, Image.ANTIALIAS)
|
||||||
|
sharpener = ImageEnhance.Sharpness(image.convert('RGBA'))
|
||||||
|
resized_image = sharpener.enhance(2.0)
|
||||||
|
# create a transparent image for background and paste the image on it
|
||||||
|
image = Image.new('RGBA', size, (255, 255, 255, 0))
|
||||||
|
image.paste(resized_image, ((size[0] - resized_image.size[0]) / 2, (size[1] - resized_image.size[1]) / 2))
|
||||||
if image.mode not in ["1", "L", "P", "RGB", "RGBA"]:
|
if image.mode not in ["1", "L", "P", "RGB", "RGBA"]:
|
||||||
image = image.convert("RGB")
|
image = image.convert("RGB")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue