From d36f972f96135b4693d4ae6ee0315745f8ed56e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 13 Nov 2012 15:17:52 +0100 Subject: [PATCH 1/2] [REV] tools: image: reverted changes introduced at rev 4440. The purpose of image_resize is to resize an image, without cropping, without aspect ratio changes. If another image management function is needed, please implement a new one with matching comments and behavior. bzr revid: tde@openerp.com-20121113141752-1rbsais66ooi89jp --- openerp/tools/image.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/openerp/tools/image.py b/openerp/tools/image.py index e2b14f18d0d..2832c84c50c 100644 --- a/openerp/tools/image.py +++ b/openerp/tools/image.py @@ -20,7 +20,6 @@ ############################################################################## import io -import sys import StringIO from PIL import Image @@ -67,18 +66,15 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file # check image size: do not create a thumbnail if avoiding smaller images if avoid_if_small and image.size[0] <= size[0] and image.size[1] <= size[1]: return base64_source - - if (float(image.size[0])/image.size[1]) > (float(size[0]) / size[1]): - ibox = (size[1] * image.size[0] / image.size[1] , size[1]) - deltax = max((size[1] * image.size[0] / image.size[1] - size[0]) / 2, 0) - deltay = 0 - else: - ibox = (size[0],size[0] * image.size[1] / image.size[0]) - deltax = 0 - deltay = max((size[0] * image.size[1] / image.size[0] - size[1]) / 2, 0) - - im2 = image.resize(ibox, Image.ANTIALIAS) - background = im2.crop((deltax, deltay, deltax+size[0], deltay+size[1])) + # create a thumbnail: will resize and keep ratios, then sharpen for better looking result + image.thumbnail(size, Image.ANTIALIAS) + image.convert('RGB') + image = image.filter(ImageFilter.SHARPEN) + # create a transparent image for background + background = Image.new('RGBA', size, (255, 255, 255, 0)) + # past the resized image on the background + background.paste(image, ((size[0] - image.size[0]) / 2, (size[1] - image.size[1]) / 2)) + # return an encoded image background_stream = StringIO.StringIO() background.save(background_stream, filetype) return background_stream.getvalue().encode(encoding) From 3668f00ad17e2d110148f781852dd1e9632a6fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 13 Nov 2012 15:38:35 +0100 Subject: [PATCH 2/2] [FIX] tools: image: trying to fix the error about converting palette image. bzr revid: tde@openerp.com-20121113143835-1j8t9azqcrskijq7 --- openerp/tools/image.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/tools/image.py b/openerp/tools/image.py index 2832c84c50c..eb3600a6652 100644 --- a/openerp/tools/image.py +++ b/openerp/tools/image.py @@ -23,7 +23,7 @@ import io import StringIO from PIL import Image -from PIL import ImageFilter +from PIL import ImageEnhance from random import random # ---------------------------------------- @@ -68,8 +68,8 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file return base64_source # create a thumbnail: will resize and keep ratios, then sharpen for better looking result image.thumbnail(size, Image.ANTIALIAS) - image.convert('RGB') - image = image.filter(ImageFilter.SHARPEN) + sharpener = ImageEnhance.Sharpness(image.convert('RGB')) + image = sharpener.enhance(2.0) # create a transparent image for background background = Image.new('RGBA', size, (255, 255, 255, 0)) # past the resized image on the background