mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
Merge pull request #4003 from djy0/master
Fix bug when merging identical images to GIF with a list of durations
This commit is contained in:
commit
24d29bd11d
|
@ -495,6 +495,26 @@ class TestFileGif(PillowTestCase):
|
|||
# Assert that the new duration is the total of the identical frames
|
||||
self.assertEqual(reread.info["duration"], 4500)
|
||||
|
||||
def test_identical_frames_to_single_frame(self):
|
||||
for duration in ([1000, 1500, 2000, 4000], (1000, 1500, 2000, 4000), 8500):
|
||||
out = self.tempfile("temp.gif")
|
||||
im_list = [
|
||||
Image.new("L", (100, 100), "#000"),
|
||||
Image.new("L", (100, 100), "#000"),
|
||||
Image.new("L", (100, 100), "#000"),
|
||||
]
|
||||
|
||||
im_list[0].save(
|
||||
out, save_all=True, append_images=im_list[1:], duration=duration
|
||||
)
|
||||
reread = Image.open(out)
|
||||
|
||||
# Assert that all frames were combined
|
||||
self.assertEqual(reread.n_frames, 1)
|
||||
|
||||
# Assert that the new duration is the total of the identical frames
|
||||
self.assertEqual(reread.info["duration"], 8500)
|
||||
|
||||
def test_number_of_loops(self):
|
||||
number_of_loops = 2
|
||||
|
||||
|
|
|
@ -489,6 +489,11 @@ def _write_multiple_frames(im, fp, palette):
|
|||
offset = frame_data["bbox"][:2]
|
||||
_write_frame_data(fp, im_frame, offset, frame_data["encoderinfo"])
|
||||
return True
|
||||
elif "duration" in im.encoderinfo and isinstance(
|
||||
im.encoderinfo["duration"], (list, tuple)
|
||||
):
|
||||
# Since multiple frames will not be written, add together the frame durations
|
||||
im.encoderinfo["duration"] = sum(im.encoderinfo["duration"])
|
||||
|
||||
|
||||
def _save_all(im, fp, filename):
|
||||
|
|
Loading…
Reference in New Issue
Block a user