Do not use transparency if it has been removed when normalizing mode

This commit is contained in:
Andrew Murray 2023-07-13 15:20:44 +10:00
parent 7a1e28404d
commit a682ceaf47
2 changed files with 16 additions and 5 deletions

View File

@ -1086,6 +1086,21 @@ def test_transparent_optimize(tmp_path):
assert reloaded.info["transparency"] == reloaded.getpixel((252, 0))
def test_removed_transparency(tmp_path):
out = str(tmp_path / "temp.gif")
im = Image.new("RGB", (256, 1))
for x in range(256):
im.putpixel((x, 0), (x, 0, 0))
im.info["transparency"] = (255, 255, 255)
with pytest.warns(UserWarning):
im.save(out)
with Image.open(out) as reloaded:
assert "transparency" not in reloaded.info
def test_rgb_transparency(tmp_path):
out = str(tmp_path / "temp.gif")

View File

@ -683,11 +683,7 @@ def get_interlace(im):
def _write_local_header(fp, im, offset, flags):
transparent_color_exists = False
try:
if "transparency" in im.encoderinfo:
transparency = im.encoderinfo["transparency"]
else:
transparency = im.info["transparency"]
transparency = int(transparency)
transparency = int(im.encoderinfo["transparency"])
except (KeyError, ValueError):
pass
else: