From 8058dc2ce6b12e71fd109b48ec9b8b2b2f09e6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Boris=20Aramis=20Aguilar=20Rodr=C3=ADguez?= Date: Tue, 1 Mar 2016 20:24:28 -0600 Subject: [PATCH] Update imageutils.py Adding a padding statement into imageutils, the goal is to allow a padding transparent/white border on pictures when being resized in different aspect ratio. --- gluon/contrib/imageutils.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/gluon/contrib/imageutils.py b/gluon/contrib/imageutils.py index 1dd19795..2c241bb1 100644 --- a/gluon/contrib/imageutils.py +++ b/gluon/contrib/imageutils.py @@ -27,10 +27,10 @@ from gluon import current class RESIZE(object): - def __init__(self, nx=160, ny=80, quality=100, + def __init__(self, nx=160, ny=80, quality=100, padding = False error_message=' image resize'): - (self.nx, self.ny, self.quality, self.error_message) = ( - nx, ny, quality, error_message) + (self.nx, self.ny, self.quality, self.error_message, self.padding) = ( + nx, ny, quality, error_message, padding) def __call__(self, value): if isinstance(value, str) and len(value) == 0: @@ -41,7 +41,14 @@ class RESIZE(object): img = Image.open(value.file) img.thumbnail((self.nx, self.ny), Image.ANTIALIAS) s = cStringIO.StringIO() - img.save(s, 'JPEG', quality=self.quality) + if self.padding: + background = Image.new('RGBA', (self.nx, self.ny), (255, 255, 255, 0)) + background.paste( + img, + ((self.nx - img.size[0]) / 2, (self.ny - img.size[1]) / 2)) + background.save(s, 'JPEG', quality=self.quality) + else: + img.save(s, 'JPEG', queality=self.quality) s.seek(0) value.file = s except: