diff --git a/PIL/ImagePalette.py b/PIL/ImagePalette.py index fdc5a46ca..1affc5394 100644 --- a/PIL/ImagePalette.py +++ b/PIL/ImagePalette.py @@ -38,7 +38,7 @@ class ImagePalette(object): def __init__(self, mode="RGB", palette=None, size=0): self.mode = mode self.rawmode = None # if set, palette contains raw data - self.palette = palette or list(range(256))*len(self.mode) + self.palette = palette or bytearray(range(256))*len(self.mode) self.colors = {} self.dirty = None if ((size == 0 and len(self.mode)*256 != len(self.palette)) or @@ -98,7 +98,7 @@ class ImagePalette(object): except KeyError: # allocate new color slot if isinstance(self.palette, bytes): - self.palette = [int(x) for x in self.palette] + self.palette = bytearray(self.palette) index = len(self.colors) if index >= 256: raise ValueError("cannot allocate more than 256 colors") diff --git a/Tests/images/chi.gif b/Tests/images/chi.gif new file mode 100644 index 000000000..d217f8b5e Binary files /dev/null and b/Tests/images/chi.gif differ diff --git a/Tests/test_imagedraw.py b/Tests/test_imagedraw.py index 947e35971..b86ae7768 100644 --- a/Tests/test_imagedraw.py +++ b/Tests/test_imagedraw.py @@ -52,6 +52,13 @@ class TestImageDraw(PillowTestCase): self.assertRaises(Exception, lambda: draw.setink(0)) self.assertRaises(Exception, lambda: draw.setfill(0)) + def test_valueerror(self): + im = Image.open("Tests/images/chi.gif") + + draw = ImageDraw.Draw(im) + draw.line(((0, 0)), fill=(0, 0, 0)) + del draw + def test_mode_mismatch(self): im = hopper("RGB").copy()