diff --git a/Tests/test_file_libtiff.py b/Tests/test_file_libtiff.py index 22bcd285622..f591c39c7c6 100644 --- a/Tests/test_file_libtiff.py +++ b/Tests/test_file_libtiff.py @@ -686,12 +686,17 @@ def test_save_ycbcr(self, tmp_path: Path) -> None: assert reloaded.tag_v2[532] == (0, 255, 128, 255, 128, 255) def test_exif_ifd(self, tmp_path: Path) -> None: - outfile = str(tmp_path / "temp.tif") + out = io.BytesIO() with Image.open("Tests/images/tiff_adobe_deflate.tif") as im: assert im.tag_v2[34665] == 125456 - im.save(outfile) + im.save(out, "TIFF") - with Image.open(outfile) as reloaded: + with Image.open(out) as reloaded: + assert 34665 not in reloaded.tag_v2 + + im.save(out, "TIFF", tiffinfo={34665: 125456}) + + with Image.open(out) as reloaded: if Image.core.libtiff_support_custom_tags: assert reloaded.tag_v2[34665] == 125456 diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index 04f36744bed..5ca347ea998 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -1819,8 +1819,9 @@ def _save(im, fp, filename): # SAMPLEFORMAT is determined by the image format and should not be copied # from legacy_ifd. supplied_tags = {**getattr(im, "tag_v2", {}), **legacy_ifd} - if SAMPLEFORMAT in supplied_tags: - del supplied_tags[SAMPLEFORMAT] + for tag in (EXIFIFD, SAMPLEFORMAT): + if tag in supplied_tags: + del supplied_tags[tag] for tag, value in itertools.chain(ifd.items(), supplied_tags.items()): # Libtiff can only process certain core items without adding