Skip to content

The value in the coordinates list cannot exceed 32767. #84

@zhanbao2000

Description

@zhanbao2000

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions