From 10214bc6c4e17b3e023d26878e8ba02111844fcb Mon Sep 17 00:00:00 2001 From: wiredfool Date: Fri, 4 Oct 2013 13:25:32 -0700 Subject: [PATCH] Premultiply RGBA images prior to transform and resize and undo after --- PIL/Image.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PIL/Image.py b/PIL/Image.py index 56a4b7093..58b85d5d2 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -1309,6 +1309,9 @@ class Image: if self.mode in ("1", "P"): resample = NEAREST + if self.mode == 'RGBA': + return self.convert('RGBa').resize(size, resample).convert('RGBA') + if resample == ANTIALIAS: # requires stretch support (imToolkit & PIL 1.1.3) try: @@ -1606,6 +1609,9 @@ class Image: :returns: An Image object. """ + if self.mode == 'RGBA': + return self.convert('RGBa').transform(size, method, data, resample, fill).convert('RGBA') + if isinstance(method, ImageTransformHandler): return method.transform(size, self, resample=resample, fill=fill) if hasattr(method, "getdata"): @@ -1613,6 +1619,7 @@ class Image: method, data = method.getdata() if data is None: raise ValueError("missing method data") + im = new(self.mode, size, None) if method == MESH: # list of quads @@ -1620,7 +1627,7 @@ class Image: im.__transformer(box, self, QUAD, quad, resample, fill) else: im.__transformer((0, 0)+size, self, method, data, resample, fill) - + return im def __transformer(self, box, image, method, data,