Skip to content

Commit

Permalink
Merge pull request #7779 from radarhere/gif
Browse files Browse the repository at this point in the history
Match mask size to pasted image size in GifImagePlugin
  • Loading branch information
hugovk committed Mar 1, 2024
2 parents b3a595c + dfb48ff commit 1b25019
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
15 changes: 15 additions & 0 deletions Tests/test_file_gif.py
Expand Up @@ -1113,6 +1113,21 @@ def im_generator(ims: list[Image.Image]) -> Generator[Image.Image, None, None]:
assert reread.n_frames == 10


def test_append_different_size_image(tmp_path: Path) -> None:
out = str(tmp_path / "temp.gif")

im = Image.new("RGB", (100, 100))
bigger_im = Image.new("RGB", (200, 200), "#f00")

im.save(out, save_all=True, append_images=[bigger_im])

with Image.open(out) as reread:
assert reread.size == (100, 100)

reread.seek(1)
assert reread.size == (100, 100)


def test_transparent_optimize(tmp_path: Path) -> None:
# From issue #2195, if the transparent color is incorrectly optimized out, GIF loses
# transparency.
Expand Down
4 changes: 1 addition & 3 deletions src/PIL/GifImagePlugin.py
Expand Up @@ -649,9 +649,7 @@ def _write_multiple_frames(im, fp, palette):
if "transparency" in encoderinfo:
# When the delta is zero, fill the image with transparency
diff_frame = im_frame.copy()
fill = Image.new(
"P", diff_frame.size, encoderinfo["transparency"]
)
fill = Image.new("P", delta.size, encoderinfo["transparency"])
if delta.mode == "RGBA":
r, g, b, a = delta.split()
mask = ImageMath.eval(
Expand Down

0 comments on commit 1b25019

Please sign in to comment.