-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Description
What did you do?
I recently updated one of my programs from 9.4 to 9.5 and got this new ValueError when drawing rounded rectangles on an image.
After some trials and error, I think the bug only happens when the rectangle height equals 1 + 2*radius. I'm not 200% confident about that, but that's all I got so far.
The exact lines causing the error are
Lines 378 to 383 in 2a274a4
| left = [x0, y0, x0 + r, y1] | |
| if corners[0]: | |
| left[1] += r + 1 | |
| if corners[3]: | |
| left[3] -= r + 1 | |
| self.draw.draw_rectangle(left, fill, 1) |
What did you expect to happen?
Well, PIL should be able to correctly calculate positions and draw my rounded corners.
What actually happened?
Traceback (most recent call last):
File "/.../test.py", line 17, in <module>
main()
File "/.../test.py", line 14, in main
draw.rounded_rectangle(coordinates, radius=3, fill=(0, 0, 0))
File "/.../env/lib/python3.9/site-packages/PIL/ImageDraw.py", line 385, in rounded_rectangle
self.draw.draw_rectangle(left, fill, 1)
ValueError: y1 must be greater than or equal to y0
What are your OS, Python and Pillow versions?
- OS: macOS 13.3.1
- Python: 3.9.16
- Pillow: 9.5.0
from PIL import Image, ImageDraw
def main():
# get a 1021x340 image
img = Image.new('RGB', (20, 20), color=(255, 255, 255))
# draw a rounded rectangle on it
draw = ImageDraw.Draw(img)
coordinates = (
(5, 0),
(15, 7)
)
# here's the bug:
# on ImageDraw.py line 383, y1 from "left" will be 1px less than y0
draw.rounded_rectangle(coordinates, radius=3, fill=(0, 0, 0))
if __name__ == '__main__':
main()leleogere and SIR-X
Metadata
Metadata
Assignees
Labels
No labels