Skip to content

Commit 0e292a8

Browse files
committed
Restore original encoderinfo after saving
1 parent 07df26a commit 0e292a8

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
@@ -315,6 +315,9 @@ def test_save_xmp() -> None:
315315
im2.encoderinfo = {"xmp": b"Second frame"}
316316
im_reloaded = roundtrip(im, xmp=b"First frame", save_all=True, append_images=[im2])
317317

318+
# Test that encoderinfo is unchanged
319+
assert im2.encoderinfo == {"xmp": b"Second frame"}
320+
318321
assert im_reloaded.info["xmp"] == b"First frame"
319322

320323
im_reloaded.seek(1)

src/PIL/Image.py

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

25532553
save_all = params.pop("save_all", None)
2554-
self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params}
2554+
encoderinfo = getattr(self, "encoderinfo", {})
2555+
self.encoderinfo = {**encoderinfo, **params}
25552556
self.encoderconfig: tuple[Any, ...] = ()
25562557

25572558
if format.upper() not in SAVE:
@@ -2589,10 +2590,7 @@ def save(
25892590
pass
25902591
raise
25912592
finally:
2592-
try:
2593-
del self.encoderinfo
2594-
except AttributeError:
2595-
pass
2593+
self.encoderinfo = encoderinfo
25962594
if open_fp:
25972595
fp.close()
25982596

0 commit comments

Comments
 (0)