In my project, I need to draw an image with a large size. But when I used the line method, I found that some lines could not be drawn. After testing, I found that if the value of coordinate of a point in the list of coordinates (both horizontal and vertical) exceeds 32767, then the line method will not draw the line, while Pillow does.
I have used the following code for testing.
from aggdraw import Draw, Pen
from PIL import Image, ImageDraw
im = Image.new('RGB', (40000, 1000), 'white')
# No problem when using Pillow, which draws a horizontal bar up to 40000 pixels long.
draw = ImageDraw.Draw(im)
draw.line((0, 250, 40000, 250), fill='red', width=500)
# This line cannot be drawn unless I change this value to 32767 or less.
draw2 = Draw(im)
pen = Pen(color=(0, 0, 255), width=500)
draw2.line((0, 750, 32768, 750), pen)
draw2.flush()
im.show()
In addition, this problem occurs in other methods that require a list of coordinates to be entered (such as path).
- Windows 10
- Python: 3.10
- Pillow: 9.1.1
- aggdraw: 1.3.15
In my project, I need to draw an image with a large size. But when I used the
linemethod, I found that some lines could not be drawn. After testing, I found that if the value of coordinate of a point in the list of coordinates (both horizontal and vertical) exceeds 32767, then thelinemethod will not draw the line, while Pillow does.I have used the following code for testing.
In addition, this problem occurs in other methods that require a list of coordinates to be entered (such as
path).