Allow writing IFDRational to UNDEFINED tag

This commit is contained in:
Andrew Murray 2024-02-28 21:07:15 +11:00
parent 18af646365
commit 904b8e549c
2 changed files with 7 additions and 2 deletions

View File

@ -224,14 +224,17 @@ def test_writing_other_types_to_bytes(value: int | IFDRational, tmp_path: Path)
assert reloaded.tag_v2[700] == b"\x01"
def test_writing_other_types_to_undefined(tmp_path: Path) -> None:
@pytest.mark.parametrize("value", (1, IFDRational(1)))
def test_writing_other_types_to_undefined(
value: int | IFDRational, tmp_path: Path
) -> None:
im = hopper()
info = TiffImagePlugin.ImageFileDirectory_v2()
tag = TiffTags.TAGS_V2[33723]
assert tag.type == TiffTags.UNDEFINED
info[33723] = 1
info[33723] = value
out = str(tmp_path / "temp.tiff")
im.save(out, tiffinfo=info)

View File

@ -790,6 +790,8 @@ class ImageFileDirectory_v2(_IFDv2Base):
@_register_writer(7)
def write_undefined(self, value):
if isinstance(value, IFDRational):
value = int(value)
if isinstance(value, int):
value = str(value).encode("ascii", "replace")
return value