I einen Satz (x, y) haben Koordinaten von einer Skizze gerasterten:Schneller Weg, um ein Bild mit PIL zu plotten?
x = [167, 109, 80, 69, 58, 31]
y = [140, 194, 227, 232, 229, 229]
Ich will diese Skizze erstellen, und es als ein Bild zu speichern. Im Moment bin ich mit PIL Zuglinie Funktion, wie folgt aus:
from PIL import Image, ImageDraw
img = [[1, 1]]
im = Image.new('L', (256, 256), 255)
imgdata = np.array(img[0][1])*256 + np.array(img[0][1])
draw = ImageDraw.Draw(im)
for i in range(len(x)-1):
draw.line((x[i],y[i], x[i+1], y[i+1]),fill=0,width=2)
im.save('test.png')
Ich frage mich, ob es einen schnelleren Weg, es zu tun ist. Die (x, y) Punkte sind in Zeichnungsreihenfolge, also könnte vielleicht die Verwendung von Image.putdata()
helfen?
'Image.putdata()' würden Sie benötigen, um die Pixeldaten durch andere Mittel zu erstellen und sie dann stopfen in eine 'Image' objekt, die ich dir, es sei denn tun wollen zweifeln Sie können ein vorhandenes Modul finden, um es zu tun (zeichnen Sie die Linie). Sie machen es mit dem PIL so schnell wie möglich. – martineau
Beachten Sie jedoch, dass [ImageDraw.line() '] (http://pillow.readthedocs.io/en/4.3.x/reference/ImageDraw.html#PIL.ImageDraw.PIL.ImageDraw.ImageDraw.line) akzeptiert wird _all_ die Koordinaten in einem einzigen Aufruf, so dass Sie die 'for'-Schleife entfernen und zumindest eine gewisse Geschwindigkeitsverbesserung erzielen können. – martineau
Befreien Sie sich von der 'for' -Schleife und versuchen Sie es mit einem einzelnen' draw.line (* zip (x, y), fill = 0, width = 2) 'Anruf. – martineau