create a palette before converting transparent L-Mode to RGBA

fixes #154
This commit is contained in:
David Schmidt 2013-04-09 13:21:38 +02:00
parent 93a488ef76
commit 836e3e05d8

View File

@ -713,6 +713,16 @@ class Image:
if dither is None: if dither is None:
dither = FLOYDSTEINBERG dither = FLOYDSTEINBERG
# fake a P-mode image, otherwise the transparency will get lost as there is
# currently no other way to convert transparency into an RGBA image
if self.mode == "L" and mode == "RGBA" and "transparency" in self.info:
from PIL import ImagePalette
self.mode = "P"
bytePalette = bytes([i//3 for i in range(768)])
self.palette = ImagePalette.raw("RGB", bytePalette)
self.palette.dirty = 1
self.load()
try: try:
im = self.im.convert(mode, dither) im = self.im.convert(mode, dither)
except ValueError: except ValueError: