6

I've been searching far and wide, but I haven't found a solution yet, so I'll ask here. I have a script that creates a large numpy array of coordinate points (~10^8 points), and i then want to draw a polygonal line using the coordinates. PIL's ImageDraw.line works fine for regular lists, but there seems to be a problem when using numpy arrays.

Right now this is my solution:

image = Image.new('RGB', (2**12, 2**12), 'black')
draw = ImageDraw.Draw(image, 'RGB')
draw.line(pos.tolist(), fill = '#00ff00')

where pos is the large numpy array that contains all points in the following order: [x0, y0, x1, y1, ...] (this can be changed if needed). The most time consuming part of the program is the pos.tolist() part, taking up about 75% of runtime.

Is there a way to draw a line and save it to an image and keeping it as a numpy array? I just want a simple image, nothing else besides the line and the black background.

maxb
  • 543
  • 4
  • 15
  • See [How can I draw lines into numpy arrays?](http://stackoverflow.com/q/31638651/562769) – Martin Thoma Jul 28 '15 at 09:57
  • Have you already thought of simplifying the line before drawing? Maybe a simple decimation (obviously considering the (x0,y0,x1,y1...) format) by 10 or 100 would speed up a lot your routine – lgsp Nov 11 '21 at 09:45

0 Answers0