Skip to content

Commit 8b695cc

Browse files
committed
When deleting EXIF IFD tag, clear IFD data
1 parent d74fdc4 commit 8b695cc

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

Tests/test_image.py

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

925+
def test_delete_ifd_tag(self) -> None:
926+
with Image.open("Tests/images/flower.jpg") as im:
927+
exif = im.getexif()
928+
exif.get_ifd(0x8769)
929+
assert 0x8769 in exif
930+
del exif[0x8769]
931+
932+
reloaded_exif = Image.Exif()
933+
reloaded_exif.load(exif.tobytes())
934+
assert 0x8769 not in reloaded_exif
935+
925936
def test_exif_load_from_fp(self) -> None:
926937
with Image.open("Tests/images/flower.jpg") as im:
927938
data = im.info["exif"]

src/PIL/Image.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4215,6 +4215,8 @@ def __delitem__(self, tag: int) -> None:
42154215
del self._info[tag]
42164216
else:
42174217
del self._data[tag]
4218+
if tag in self._ifds:
4219+
del self._ifds[tag]
42184220

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

0 commit comments

Comments
 (0)