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
def test_trns_p_rgba():
@pytest.mark.parametrize("mode", ("LA", "PA", "RGBA"))
def test_trns_p_transparency(mode):
# Arrange
im = hopper("P")
im.info["transparency"] = 128
# Act
im_rgba = im.convert("RGBA")
converted_im = im.convert(mode)
# Assert
assert "transparency" not in im_rgba.info
# https://github.com/python-pillow/Pillow/issues/2702
assert im_rgba.palette is None
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
assert converted_im.palette is None
def test_trns_l(tmp_path):

View File

@ -1005,7 +1005,7 @@ class Image:
trns_im = trns_im.convert("RGB")
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"]
delete_trns = True