Skip to content

Commit

Permalink
Merge pull request #6292 from raygard/comment_use_gif89a
Browse files Browse the repository at this point in the history
Always use GIF89a for comments
  • Loading branch information
radarhere committed May 21, 2022
2 parents 5cb007f + 882c04b commit 2072a52
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
7 changes: 6 additions & 1 deletion Tests/test_file_gif.py
Expand Up @@ -807,6 +807,9 @@ def test_comment(tmp_path):
with Image.open(out) as reread:
assert reread.info["comment"] == im.info["comment"].encode()

# Test that GIF89a is used for comments
assert reread.info["version"] == b"GIF89a"


def test_comment_over_255(tmp_path):
out = str(tmp_path / "temp.gif")
Expand All @@ -817,9 +820,11 @@ def test_comment_over_255(tmp_path):
im.info["comment"] = comment
im.save(out)
with Image.open(out) as reread:

assert reread.info["comment"] == comment

# Test that GIF89a is used for comments
assert reread.info["version"] == b"GIF89a"


def test_zero_comment_subblocks():
with Image.open("Tests/images/hopper_zero_comment_subblocks.gif") as im:
Expand Down
21 changes: 10 additions & 11 deletions src/PIL/GifImagePlugin.py
Expand Up @@ -903,17 +903,16 @@ def _get_global_header(im, info):
# https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp

version = b"87a"
for extensionKey in ["transparency", "duration", "loop", "comment"]:
if info and extensionKey in info:
if (extensionKey == "duration" and info[extensionKey] == 0) or (
extensionKey == "comment" and not (1 <= len(info[extensionKey]) <= 255)
):
continue
version = b"89a"
break
else:
if im.info.get("version") == b"89a":
version = b"89a"
if im.info.get("version") == b"89a" or (
info
and (
"transparency" in info
or "loop" in info
or info.get("duration")
or info.get("comment")
)
):
version = b"89a"

background = _get_background(im, info.get("background"))

Expand Down

0 comments on commit 2072a52

Please sign in to comment.