Skip to content

Commit 3a66b1d

Browse files
authored
Restore original encoderinfo after saving (#8942)
2 parents 935e9e4 + 0e292a8 commit 3a66b1d

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

Tests/test_file_mpo.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ def test_save_xmp() -> None:
318318
im2.encoderinfo = {"xmp": b"Second frame"}
319319
im_reloaded = roundtrip(im, xmp=b"First frame", save_all=True, append_images=[im2])
320320

321+
# Test that encoderinfo is unchanged
322+
assert im2.encoderinfo == {"xmp": b"Second frame"}
323+
321324
assert im_reloaded.info["xmp"] == b"First frame"
322325

323326
im_reloaded.seek(1)

src/PIL/Image.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2556,7 +2556,8 @@ def save(
25562556
self.load()
25572557

25582558
save_all = params.pop("save_all", None)
2559-
self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params}
2559+
encoderinfo = getattr(self, "encoderinfo", {})
2560+
self.encoderinfo = {**encoderinfo, **params}
25602561
self.encoderconfig: tuple[Any, ...] = ()
25612562

25622563
if format.upper() not in SAVE:
@@ -2594,10 +2595,7 @@ def save(
25942595
pass
25952596
raise
25962597
finally:
2597-
try:
2598-
del self.encoderinfo
2599-
except AttributeError:
2600-
pass
2598+
self.encoderinfo = encoderinfo
26012599
if open_fp:
26022600
fp.close()
26032601

0 commit comments

Comments
 (0)