Skip to content

Commit 8d5eaf3

Browse files
committed
Raise ValueError if all sizes are too large for image
1 parent 93b2185 commit 8d5eaf3

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

Tests/test_file_ico.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ def test_only_save_relevant_sizes(tmp_path: Path) -> None:
224224
# Assert
225225
assert reloaded.info["sizes"] == {(16, 16), (24, 24), (32, 32), (48, 48)}
226226

227+
im = Image.new("1", (1, 1))
228+
outfile = tmp_path / "temp.ico"
229+
with pytest.raises(ValueError, match="All sizes too large for image"):
230+
im.save(outfile, sizes=[(2, 2)])
231+
227232

228233
def test_save_append_images(tmp_path: Path) -> None:
229234
# append_images should be used for scaled down versions of the image

src/PIL/IcoImagePlugin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None:
9393
frame = provided_im.copy()
9494
frame.thumbnail(size, Image.Resampling.LANCZOS, reducing_gap=None)
9595
frames.append(frame)
96+
if not frames:
97+
msg = "All sizes too large for image"
98+
raise ValueError(msg)
9699
fp.write(o16(len(frames))) # idCount(2)
97100
offset = fp.tell() + len(frames) * 16
98101
for frame in frames:

0 commit comments

Comments
 (0)