From 7003e4b5b41b41be1920c7c8d8456df189bdbc9a Mon Sep 17 00:00:00 2001 From: qodelicious <162776175+qodelicious@users.noreply.github.com> Date: Tue, 27 Oct 2026 12:06:56 +0000 Subject: [PATCH 1/2] Allow ImageOps.scale() to return zero dimension images --- Tests/test_imageops.py | 3 +++ src/PIL/ImageOps.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/Tests/test_imageops.py b/Tests/test_imageops.py index 124f2a7535a..34cd824cb14 100644 --- a/Tests/test_imageops.py +++ b/Tests/test_imageops.py @@ -133,6 +133,9 @@ def _check( _check((10, 0), lambda im: ImageOps.cover(im, (5, 5)), (5, 0)) _check((5, 5), lambda im: ImageOps.cover(im, (2, 0)), (0, 0)) + _check((5, 0), lambda im: ImageOps.scale(im, 2), (10, 0)) + _check((10, 1), lambda im: ImageOps.scale(im, 0.4), (4, 0)) + def test_1pxfit() -> None: # Division by zero in equalize if image is 1 pixel high diff --git a/src/PIL/ImageOps.py b/src/PIL/ImageOps.py index ceff85e1c1a..58820e0b0ee 100644 --- a/src/PIL/ImageOps.py +++ b/src/PIL/ImageOps.py @@ -475,6 +475,8 @@ def scale( raise ValueError(msg) else: size = (round(factor * image.width), round(factor * image.height)) + if min(size) == 0: + return _new_empty(image, size) return image.resize(size, resample) From afd9be0f2b029eaef7be2f3a8517bc06358091e5 Mon Sep 17 00:00:00 2001 From: Andrew Murray <3112309+radarhere@users.noreply.github.com> Date: Sat, 31 Oct 2026 12:35:46 +1100 Subject: [PATCH 2/2] Check zero width result --- Tests/test_imageops.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/test_imageops.py b/Tests/test_imageops.py index 34cd824cb14..9fd03975131 100644 --- a/Tests/test_imageops.py +++ b/Tests/test_imageops.py @@ -133,8 +133,8 @@ def _check( _check((10, 0), lambda im: ImageOps.cover(im, (5, 5)), (5, 0)) _check((5, 5), lambda im: ImageOps.cover(im, (2, 0)), (0, 0)) - _check((5, 0), lambda im: ImageOps.scale(im, 2), (10, 0)) _check((10, 1), lambda im: ImageOps.scale(im, 0.4), (4, 0)) + _check((1, 10), lambda im: ImageOps.scale(im, 0.4), (0, 4)) def test_1pxfit() -> None: