This commit is contained in:
Andrew Murray 2025-05-23 16:19:20 +00:00 committed by GitHub
commit 9862f08fc0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 3 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -100,6 +100,18 @@ def test_l_mode_after_rgb() -> None:
assert im.mode == "RGB"
def test_l_mode_transparency_after_rgb() -> None:
with Image.open("Tests/images/no_palette_with_transparency_after_rgb.gif") as im:
expected = im.convert("RGB")
d = ImageDraw.Draw(expected)
d.rectangle([(0, 0), (64, 128)], fill="#000")
im.seek(1)
assert im.mode == "RGB"
assert_image_equal(im, expected)
def test_palette_not_needed_for_second_frame() -> None:
with Image.open("Tests/images/palette_not_needed_for_second_frame.gif") as im:
im.seek(1)

View File

@ -477,8 +477,11 @@ class GifImageFile(ImageFile.ImageFile):
self._prev_im = expanded_im
assert self._prev_im is not None
if self._frame_transparency is not None:
self.im.putpalettealpha(self._frame_transparency, 0)
frame_im = self.im.convert("RGBA")
if self.mode == "L":
frame_im = self.im.convert_transparent("LA", self._frame_transparency)
else:
self.im.putpalettealpha(self._frame_transparency, 0)
frame_im = self.im.convert("RGBA")
else:
frame_im = self.im.convert("RGB")
@ -487,7 +490,7 @@ class GifImageFile(ImageFile.ImageFile):
self.im = self._prev_im
self._mode = self.im.mode
if frame_im.mode == "RGBA":
if frame_im.mode in ("LA", "RGBA"):
self.im.paste(frame_im, self.dispose_extent, frame_im)
else:
self.im.paste(frame_im, self.dispose_extent)