diff --git a/Tests/test_image.py b/Tests/test_image.py index 07cf6eb92b3..0a951af8aaf 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -607,6 +607,20 @@ def test_remap_palette(self): with pytest.raises(ValueError): im.remap_palette(None) + def test_remap_palette_transparency(self): + im = Image.new("P", (1, 2)) + im.putpixel((0, 1), 1) + im.info["transparency"] = 0 + + im_remapped = im.remap_palette([1, 0]) + assert im_remapped.info["transparency"] == 1 + + # Test unused transparency + im.info["transparency"] = 2 + + im_remapped = im.remap_palette([1, 0]) + assert "transparency" not in im_remapped.info + def test__new(self): im = hopper("RGB") im_p = hopper("P") diff --git a/src/PIL/Image.py b/src/PIL/Image.py index 086b2b196f9..e226f140089 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -1935,7 +1935,11 @@ def remap_palette(self, dest_map, source_palette=None): m_im.palette = ImagePalette.ImagePalette("RGB", palette=palette_bytes) if "transparency" in self.info: - m_im.info["transparency"] = new_positions[self.info["transparency"]] + try: + m_im.info["transparency"] = dest_map.index(self.info["transparency"]) + except ValueError: + if "transparency" in m_im.info: + del m_im.info["transparency"] return m_im