diff --git a/Tests/test_file_apng.py b/Tests/test_file_apng.py index 7fb6f59d4..15e007ca1 100644 --- a/Tests/test_file_apng.py +++ b/Tests/test_file_apng.py @@ -433,7 +433,9 @@ def test_apng_save_duration_loop(tmp_path): # test removal of duplicated frames frame = Image.new("RGBA", (128, 64), (255, 0, 0, 255)) - frame.save(test_file, save_all=True, append_images=[frame], duration=[500, 250]) + frame.save( + test_file, save_all=True, append_images=[frame, frame], duration=[500, 100, 150] + ) with Image.open(test_file) as im: im.load() assert im.n_frames == 1 diff --git a/src/PIL/PngImagePlugin.py b/src/PIL/PngImagePlugin.py index bd886e218..a91393726 100644 --- a/src/PIL/PngImagePlugin.py +++ b/src/PIL/PngImagePlugin.py @@ -1117,12 +1117,12 @@ def _write_multiple_frames(im, fp, chunk, rawmode): and prev_disposal == encoderinfo.get("disposal") and prev_blend == encoderinfo.get("blend") ): - duration = encoderinfo.get("duration", 0) - if duration: + frame_duration = encoderinfo.get("duration", 0) + if frame_duration: if "duration" in previous["encoderinfo"]: - previous["encoderinfo"]["duration"] += duration + previous["encoderinfo"]["duration"] += frame_duration else: - previous["encoderinfo"]["duration"] = duration + previous["encoderinfo"]["duration"] = frame_duration continue else: bbox = None