Keep transparency when converting from P to LA or PA

This commit is contained in:
Andrew Murray 2021-07-12 22:55:12 +10:00
parent be30792714
commit 97e0cb85ee
2 changed files with 10 additions and 6 deletions

View File

@ -100,18 +100,22 @@ def test_trns_p(tmp_path):
# ref https://github.com/python-pillow/Pillow/issues/664 # ref https://github.com/python-pillow/Pillow/issues/664
def test_trns_p_rgba(): @pytest.mark.parametrize("mode", ("LA", "PA", "RGBA"))
def test_trns_p_transparency(mode):
# Arrange # Arrange
im = hopper("P") im = hopper("P")
im.info["transparency"] = 128 im.info["transparency"] = 128
# Act # Act
im_rgba = im.convert("RGBA") converted_im = im.convert(mode)
# Assert # Assert
assert "transparency" not in im_rgba.info assert "transparency" not in converted_im.info
if mode == "PA":
assert converted_im.palette is not None
else:
# https://github.com/python-pillow/Pillow/issues/2702 # https://github.com/python-pillow/Pillow/issues/2702
assert im_rgba.palette is None assert converted_im.palette is None
def test_trns_l(tmp_path): def test_trns_l(tmp_path):

View File

@ -1005,7 +1005,7 @@ class Image:
trns_im = trns_im.convert("RGB") trns_im = trns_im.convert("RGB")
trns = trns_im.getpixel((0, 0)) trns = trns_im.getpixel((0, 0))
elif self.mode == "P" and mode == "RGBA": elif self.mode == "P" and mode in ("LA", "PA", "RGBA"):
t = self.info["transparency"] t = self.info["transparency"]
delete_trns = True delete_trns = True