summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/website/models/website.py2
-rw-r--r--openerp/tools/image.py6
2 files changed, 5 insertions, 3 deletions
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 541a75aa3f0..25dc303f074 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -591,7 +591,7 @@ class website(osv.osv):
response.data = data
else:
size = (max_w, max_h)
- img = image_resize_and_sharpen(image, size)
+ img = image_resize_and_sharpen(image, size, preserve_aspect_ratio=True)
image_save_for_web(img, response.stream, format=image.format)
# invalidate content-length computed by make_conditional as
# writing to response.stream does not do it (as of werkzeug 0.9.3)
diff --git a/openerp/tools/image.py b/openerp/tools/image.py
index aa110d7825e..0b02d27a631 100644
--- a/openerp/tools/image.py
+++ b/openerp/tools/image.py
@@ -96,19 +96,21 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
image.save(background_stream, filetype)
return background_stream.getvalue().encode(encoding)
-def image_resize_and_sharpen(image, size, factor=2.0):
+def image_resize_and_sharpen(image, size, preserve_aspect_ratio=False, factor=2.0):
"""
Create a thumbnail by resizing while keeping ratio.
A sharpen filter is applied for a better looking result.
:param image: PIL.Image.Image()
:param size: 2-tuple(width, height)
+ :param preserve_aspect_ratio: boolean (default: False)
:param factor: Sharpen factor (default: 2.0)
"""
if image.mode != 'RGBA':
image = image.convert('RGBA')
image.thumbnail(size, Image.ANTIALIAS)
- size = image.size
+ if preserve_aspect_ratio:
+ size = image.size
sharpener = ImageEnhance.Sharpness(image)
resized_image = sharpener.enhance(factor)
# create a transparent image for background and paste the image on it