Added reading of earlier ImageMagick EXIF data

This commit is contained in:
Andrew Murray 2020-03-14 00:04:58 +11:00
parent ca00126e2b
commit ca5a81ef27
3 changed files with 19 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

View File

@ -593,9 +593,13 @@ class TestFilePng:
assert im.text == {"TXT": "VALUE", "ZIP": "VALUE"}
def test_exif(self):
with Image.open("Tests/images/exif.png") as im:
exif = im._getexif()
assert exif[274] == 1
for test_file in (
"Tests/images/exif.png", # With an EXIF chunk
"Tests/images/exif_imagemagick.png", # With an ImageMagick zTXt chunk
):
with Image.open(test_file) as im:
exif = im._getexif()
assert exif[274] == 1
def test_exif_save(self, tmp_path):
with Image.open("Tests/images/exif.png") as im:

View File

@ -694,14 +694,24 @@ class PngImageFile(ImageFile.ImageFile):
def _getexif(self):
if "exif" not in self.info:
self.load()
if "exif" not in self.info:
if "exif" not in self.info and "Raw profile type exif" not in self.info:
return None
return dict(self.getexif())
def getexif(self):
if "exif" not in self.info:
self.load()
return ImageFile.ImageFile.getexif(self)
if self._exif is None:
self._exif = Image.Exif()
exif_info = self.info.get("exif")
if exif_info is None and "Raw profile type exif" in self.info:
exif_info = bytes.fromhex(
"".join(self.info["Raw profile type exif"].split("\n")[3:])
)
self._exif.load(exif_info)
return self._exif
# --------------------------------------------------------------------