Merge pull request #6800 from radarhere/int_ascii

Resolves https://github.com/python-pillow/Pillow/issues/6799
This commit is contained in:
Hugo van Kemenade 2022-12-29 23:36:33 +02:00 committed by GitHub
commit 1ba19b1105
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

View File

@ -185,20 +185,21 @@ def test_iptc(tmp_path):
im.save(out) im.save(out)
def test_writing_bytes_to_ascii(tmp_path): @pytest.mark.parametrize("value, expected", ((b"test", "test"), (1, "1")))
im = hopper() def test_writing_other_types_to_ascii(value, expected, tmp_path):
info = TiffImagePlugin.ImageFileDirectory_v2() info = TiffImagePlugin.ImageFileDirectory_v2()
tag = TiffTags.TAGS_V2[271] tag = TiffTags.TAGS_V2[271]
assert tag.type == TiffTags.ASCII assert tag.type == TiffTags.ASCII
info[271] = b"test" info[271] = value
im = hopper()
out = str(tmp_path / "temp.tiff") out = str(tmp_path / "temp.tiff")
im.save(out, tiffinfo=info) im.save(out, tiffinfo=info)
with Image.open(out) as reloaded: with Image.open(out) as reloaded:
assert reloaded.tag_v2[271] == "test" assert reloaded.tag_v2[271] == expected
def test_writing_int_to_bytes(tmp_path): def test_writing_int_to_bytes(tmp_path):

View File

@ -732,6 +732,8 @@ class ImageFileDirectory_v2(MutableMapping):
@_register_writer(2) @_register_writer(2)
def write_string(self, value): def write_string(self, value):
# remerge of https://github.com/python-pillow/Pillow/pull/1416 # remerge of https://github.com/python-pillow/Pillow/pull/1416
if isinstance(value, int):
value = str(value)
if not isinstance(value, bytes): if not isinstance(value, bytes):
value = value.encode("ascii", "replace") value = value.encode("ascii", "replace")
return value + b"\0" return value + b"\0"