Skip to content

Commit 1b25019

Browse files
authored
Merge pull request #7779 from radarhere/gif
Match mask size to pasted image size in GifImagePlugin
2 parents b3a595c + dfb48ff commit 1b25019

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

Tests/test_file_gif.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,21 @@ def im_generator(ims: list[Image.Image]) -> Generator[Image.Image, None, None]:
11131113
assert reread.n_frames == 10
11141114

11151115

1116+
def test_append_different_size_image(tmp_path: Path) -> None:
1117+
out = str(tmp_path / "temp.gif")
1118+
1119+
im = Image.new("RGB", (100, 100))
1120+
bigger_im = Image.new("RGB", (200, 200), "#f00")
1121+
1122+
im.save(out, save_all=True, append_images=[bigger_im])
1123+
1124+
with Image.open(out) as reread:
1125+
assert reread.size == (100, 100)
1126+
1127+
reread.seek(1)
1128+
assert reread.size == (100, 100)
1129+
1130+
11161131
def test_transparent_optimize(tmp_path: Path) -> None:
11171132
# From issue #2195, if the transparent color is incorrectly optimized out, GIF loses
11181133
# transparency.

src/PIL/GifImagePlugin.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -649,9 +649,7 @@ def _write_multiple_frames(im, fp, palette):
649649
if "transparency" in encoderinfo:
650650
# When the delta is zero, fill the image with transparency
651651
diff_frame = im_frame.copy()
652-
fill = Image.new(
653-
"P", diff_frame.size, encoderinfo["transparency"]
654-
)
652+
fill = Image.new("P", delta.size, encoderinfo["transparency"])
655653
if delta.mode == "RGBA":
656654
r, g, b, a = delta.split()
657655
mask = ImageMath.eval(

0 commit comments

Comments
 (0)