Skip to content

Commit

Permalink
Allow "loop=None" when saving
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Aug 9, 2023
1 parent c98a799 commit bfafa46
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
8 changes: 8 additions & 0 deletions Tests/test_file_gif.py
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,14 @@ def test_identical_frames_to_single_frame(duration, tmp_path):
assert reread.info["duration"] == 8500


def test_loop_none(tmp_path):
out = str(tmp_path / "temp.gif")
im = Image.new("L", (100, 100), "#000")
im.save(out, loop=None)
with Image.open(out) as reread:
assert "loop" not in reread.info


def test_number_of_loops(tmp_path):
number_of_loops = 2

Expand Down
2 changes: 1 addition & 1 deletion docs/handbook/image-file-formats.rst
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ their :py:attr:`~PIL.Image.Image.info` values.

**loop**
Integer number of times the GIF should loop. 0 means that it will loop
forever. By default, the image will not loop.
forever. If omitted or ``None``, the image will not loop.

**comment**
A comment about the image.
Expand Down
4 changes: 2 additions & 2 deletions src/PIL/GifImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -912,7 +912,7 @@ def _get_global_header(im, info):
info
and (
"transparency" in info
or "loop" in info
or info.get("loop") is not None
or info.get("duration")
or info.get("comment")
)
Expand All @@ -937,7 +937,7 @@ def _get_global_header(im, info):
# Global Color Table
_get_header_palette(palette_bytes),
]
if "loop" in info:
if info.get("loop") is not None:
header.append(
b"!"
+ o8(255) # extension intro
Expand Down

0 comments on commit bfafa46

Please sign in to comment.