Unittests for exif preservation in formats jpeg, tiff and webp added

This commit is contained in:
Mathias Graf 2022-12-16 10:12:57 +01:00
parent 825a54ca31
commit 5e212e2956
4 changed files with 36 additions and 1 deletions

View File

@ -442,6 +442,17 @@ class TestFileJpeg:
info = im._getexif()
assert info[305] == "Adobe Photoshop CS Macintosh"
def test_exif_keep(self, tmp_path):
with Image.open("Tests/images/pil_sample_rgb.jpg") as im:
f = str(tmp_path / "temp.jpg")
im.save(f)
with Image.open(f) as new_im:
orig_info = im._getexif()
new_info = new_im._getexif()
assert orig_info == new_info
def test_get_child_images(self):
with Image.open("Tests/images/flower.jpg") as im:
ims = im.get_child_images()

View File

@ -530,6 +530,18 @@ class TestFileTiff:
exif = im.getexif()
assert exif[256] == 100
def test_exif_keep(self, tmp_path):
with Image.open("Tests/images/ifd_tag_type.tiff") as orig_im:
orig_exif = orig_im.getexif()
assert orig_exif[271] == "FLIR"
f = str(tmp_path / "temp.tif")
orig_im.save(f)
with Image.open(f) as new_im:
new_exif = new_im.getexif()
assert orig_exif[271] == new_exif[271]
def test_reload_exif_after_seek(self):
with Image.open("Tests/images/multipage.tiff") as im:
exif = im.getexif()

View File

@ -119,6 +119,18 @@ class TestFileWebp:
reloaded.seek(1)
assert_image_similar(im2, reloaded, 1)
def test_exif_keep(self, tmp_path):
with Image.open("Tests/images/flower.webp") as orig_im:
orig_exif = orig_im.getexif()
f = str(tmp_path / "exif_img.webp")
orig_im.save(f)
with Image.open(f) as new_im:
new_exif = new_im.getexif()
assert orig_exif[271] == "Canon"
assert orig_exif[271] == new_exif[271]
def test_icc_profile(self, tmp_path):
self._roundtrip(tmp_path, self.rgb_mode, 12.5, {"icc_profile": None})
if _webp.HAVE_WEBPANIM:

View File

@ -1602,7 +1602,7 @@ def _save(im, fp, filename):
if "tiffinfo" in encoderinfo:
info = encoderinfo["tiffinfo"]
else:
info = encoderinfo.get("exif", im.info.get("exif", b""))
info = encoderinfo.get("exif", im.info.get("exif", im.getexif()))
if isinstance(info, bytes):
exif = Image.Exif()
exif.load(info)