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.
This commit is contained in:
Boris Aramis Aguilar Rodríguez
2016-03-01 20:24:28 -06:00
parent 3808b1f6ae
commit 8058dc2ce6
+11 -4
View File
@@ -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: