Skip to content

Commit

Permalink
Merge pull request #7842 from radarhere/exif
Browse files Browse the repository at this point in the history
  • Loading branch information
hugovk committed Mar 11, 2024
2 parents 7b80352 + 10b48a6 commit 9fec5d5
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/PIL/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -3712,7 +3712,7 @@ def _fixup_dict(self, src_dict):
# returns a dict with any single item tuples/lists as individual values
return {k: self._fixup(v) for k, v in src_dict.items()}

def _get_ifd_dict(self, offset):
def _get_ifd_dict(self, offset, group=None):
try:
# an offset pointer to the location of the nested embedded IFD.
# It should be a long, but may be corrupted.
Expand All @@ -3722,7 +3722,7 @@ def _get_ifd_dict(self, offset):
else:
from . import TiffImagePlugin

info = TiffImagePlugin.ImageFileDirectory_v2(self.head)
info = TiffImagePlugin.ImageFileDirectory_v2(self.head, group=group)
info.load(self.fp)
return self._fixup_dict(info)

Expand Down Expand Up @@ -3794,14 +3794,14 @@ def _get_merged_dict(self):

# get EXIF extension
if ExifTags.IFD.Exif in self:
ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif])
ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif], ExifTags.IFD.Exif)
if ifd:
merged_dict.update(ifd)

# GPS
if ExifTags.IFD.GPSInfo in self:
merged_dict[ExifTags.IFD.GPSInfo] = self._get_ifd_dict(
self[ExifTags.IFD.GPSInfo]
self[ExifTags.IFD.GPSInfo], ExifTags.IFD.GPSInfo
)

return merged_dict
Expand Down Expand Up @@ -3835,7 +3835,7 @@ def get_ifd(self, tag):
elif tag in [ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo]:
offset = self._hidden_data.get(tag, self.get(tag))
if offset is not None:
self._ifds[tag] = self._get_ifd_dict(offset)
self._ifds[tag] = self._get_ifd_dict(offset, tag)
elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.Makernote]:
if ExifTags.IFD.Exif not in self._ifds:
self.get_ifd(ExifTags.IFD.Exif)
Expand Down Expand Up @@ -3917,7 +3917,7 @@ def get_ifd(self, tag):
self._ifds[tag] = makernote
else:
# Interop
self._ifds[tag] = self._get_ifd_dict(tag_data)
self._ifds[tag] = self._get_ifd_dict(tag_data, tag)
ifd = self._ifds.get(tag, {})
if tag == ExifTags.IFD.Exif and self._hidden_data:
ifd = {
Expand Down

0 comments on commit 9fec5d5

Please sign in to comment.