Skip to content

Commit 89d8be5

Browse files
authored
Merge pull request #7821 from radarhere/apng
2 parents 3cdd49f + c322a2f commit 89d8be5

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

Tests/test_file_apng.py

+10
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,16 @@ def test_apng_save_blend(tmp_path: Path) -> None:
668668
assert im.getpixel((0, 0)) == (0, 255, 0, 255)
669669

670670

671+
def test_apng_save_size(tmp_path: Path) -> None:
672+
test_file = str(tmp_path / "temp.png")
673+
674+
im = Image.new("L", (100, 100))
675+
im.save(test_file, save_all=True, append_images=[Image.new("L", (200, 200))])
676+
677+
with Image.open(test_file) as reloaded:
678+
assert reloaded.size == (200, 200)
679+
680+
671681
def test_seek_after_close() -> None:
672682
im = Image.open("Tests/images/apng/delay.png")
673683
im.seek(1)

src/PIL/PngImagePlugin.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -1238,16 +1238,20 @@ def _save(im, fp, filename, chunk=putchunk, save_all=False):
12381238
"default_image", im.info.get("default_image")
12391239
)
12401240
modes = set()
1241+
sizes = set()
12411242
append_images = im.encoderinfo.get("append_images", [])
12421243
for im_seq in itertools.chain([im], append_images):
12431244
for im_frame in ImageSequence.Iterator(im_seq):
12441245
modes.add(im_frame.mode)
1246+
sizes.add(im_frame.size)
12451247
for mode in ("RGBA", "RGB", "P"):
12461248
if mode in modes:
12471249
break
12481250
else:
12491251
mode = modes.pop()
1252+
size = tuple(max(frame_size[i] for frame_size in sizes) for i in range(2))
12501253
else:
1254+
size = im.size
12511255
mode = im.mode
12521256

12531257
if mode == "P":
@@ -1295,8 +1299,8 @@ def _save(im, fp, filename, chunk=putchunk, save_all=False):
12951299
chunk(
12961300
fp,
12971301
b"IHDR",
1298-
o32(im.size[0]), # 0: size
1299-
o32(im.size[1]),
1302+
o32(size[0]), # 0: size
1303+
o32(size[1]),
13001304
mode, # 8: depth/type
13011305
b"\0", # 10: compression
13021306
b"\0", # 11: filter category

0 commit comments

Comments
 (0)