diff --git a/Tests/test_imagepalette.py b/Tests/test_imagepalette.py index d4d6922c8..5152abf56 100644 --- a/Tests/test_imagepalette.py +++ b/Tests/test_imagepalette.py @@ -29,6 +29,8 @@ def test_getcolor(): rgba_palette = ImagePalette.ImagePalette("RGBA") assert rgba_palette.getcolor((0, 0, 0)) == rgba_palette.getcolor((0, 0, 0, 255)) + assert palette.getcolor((0, 0, 0)) == palette.getcolor((0, 0, 0, 255)) + with pytest.raises(ValueError): palette.getcolor((1, 2, 3)) diff --git a/src/PIL/ImagePalette.py b/src/PIL/ImagePalette.py index 03ffef099..36b536fb6 100644 --- a/src/PIL/ImagePalette.py +++ b/src/PIL/ImagePalette.py @@ -105,8 +105,12 @@ class ImagePalette: if self.rawmode: raise ValueError("palette contains raw palette data") if isinstance(color, tuple): - if self.mode == "RGBA" and len(color) == 3: - color += (255,) + if self.mode == "RGB": + if len(color) == 4 and color[3] == 255: + color = color[:3] + elif self.mode == "RGBA": + if len(color) == 3: + color += (255,) try: return self.colors[color] except KeyError as e: