diff --git a/Tests/test_file_tiff_metadata.py b/Tests/test_file_tiff_metadata.py index d7a18c72504..8b816aa4fb5 100644 --- a/Tests/test_file_tiff_metadata.py +++ b/Tests/test_file_tiff_metadata.py @@ -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) diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index 3ba4de9d12e..b59139f5858 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -790,6 +790,8 @@ def load_undefined(self, data, legacy_api=True): @_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