Skip to content

Commit 3c185d1

Browse files
authored
Do not load image during save if file extension is unknown (#8835)
Co-authored-by: Andrew Murray <[email protected]>
1 parent e1f0def commit 3c185d1

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

Tests/test_file_hdf5stub.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_save() -> None:
4343
# Arrange
4444
with Image.open(TEST_FILE) as im:
4545
dummy_fp = BytesIO()
46-
dummy_filename = "dummy.filename"
46+
dummy_filename = "dummy.h5"
4747

4848
# Act / Assert: stub cannot save without an implemented handler
4949
with pytest.raises(OSError):

src/PIL/Image.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -2510,13 +2510,6 @@ def save(
25102510
# only set the name for metadata purposes
25112511
filename = os.fspath(fp.name)
25122512

2513-
# may mutate self!
2514-
self._ensure_mutable()
2515-
2516-
save_all = params.pop("save_all", False)
2517-
self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params}
2518-
self.encoderconfig: tuple[Any, ...] = ()
2519-
25202513
preinit()
25212514

25222515
filename_ext = os.path.splitext(filename)[1].lower()
@@ -2531,6 +2524,13 @@ def save(
25312524
msg = f"unknown file extension: {ext}"
25322525
raise ValueError(msg) from e
25332526

2527+
# may mutate self!
2528+
self._ensure_mutable()
2529+
2530+
save_all = params.pop("save_all", False)
2531+
self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params}
2532+
self.encoderconfig: tuple[Any, ...] = ()
2533+
25342534
if format.upper() not in SAVE:
25352535
init()
25362536
if save_all:

0 commit comments

Comments
 (0)