Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: imageConversion.py

Issue 5195120659922944: Issue 1883 - Convert mode P to LA to work around a PIL bug when extracting the alpha channel (Closed)
Patch Set: Consider no transparency again and added a comment Created Jan. 27, 2015, 2:56 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: imageConversion.py
===================================================================
--- a/imageConversion.py
+++ b/imageConversion.py
@@ -19,14 +19,14 @@
if image.mode in ('RGBA', 'LA'):
return image.split()[image.getbands().index('A')]
- if image.mode == 'P':
- transparency = image.info.get('transparency')
-
- if transparency is not None:
- table = [255] * 256
- table[transparency] = 0
-
- return image.point(table, 'L')
+ # In order to generate an alpha channel for images using a palette, we
+ # convert the image to grayscale+alpha. Initially, we created an alpha
+ # channel by replacing opaque pixels with a high mark and transparent
+ # pixels with a low mark. However, it turned out that you can't rely on the
+ # value of Image.info['transparency'] since in some cases it might be an
+ # unparsed string instead an int indicating the value of transparent pixels.
+ if image.mode == 'P' and 'transparency' in image.info:
+ return image.convert('LA').split()[1]
def load_image(path):
image = Image.open(path)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld