Skip to content

Commit a74e4fa

Browse files
authored
When deleting EXIF IFD tag, delete IFD data (#9083)
2 parents 9a2c516 + 8b695cc commit a74e4fa

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

Tests/test_image.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,17 @@ def test_exif_ifd(self) -> None:
953953
reloaded_exif.load(exif.tobytes())
954954
assert reloaded_exif.get_ifd(0x8769) == exif.get_ifd(0x8769)
955955

956+
def test_delete_ifd_tag(self) -> None:
957+
with Image.open("Tests/images/flower.jpg") as im:
958+
exif = im.getexif()
959+
exif.get_ifd(0x8769)
960+
assert 0x8769 in exif
961+
del exif[0x8769]
962+
963+
reloaded_exif = Image.Exif()
964+
reloaded_exif.load(exif.tobytes())
965+
assert 0x8769 not in reloaded_exif
966+
956967
def test_exif_load_from_fp(self) -> None:
957968
with Image.open("Tests/images/flower.jpg") as im:
958969
data = im.info["exif"]

src/PIL/Image.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4218,6 +4218,8 @@ def __delitem__(self, tag: int) -> None:
42184218
del self._info[tag]
42194219
else:
42204220
del self._data[tag]
4221+
if tag in self._ifds:
4222+
del self._ifds[tag]
42214223

42224224
def __iter__(self) -> Iterator[int]:
42234225
keys = set(self._data)

0 commit comments

Comments
 (0)