From f3451aefc649a77add0232da4011cffd47f2e89f Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 23 Jun 2021 19:26:53 +1000 Subject: [PATCH] Convert opaque RGBA color to RGB if that is the palette mode --- Tests/test_imagepalette.py | 2 ++ src/PIL/ImagePalette.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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: