1
我有一组(X,Y)坐标光栅化从草图:用PIL绘制图像的更快方式?
x = [167, 109, 80, 69, 58, 31]
y = [140, 194, 227, 232, 229, 229]
我想重新创建草图,并将其保存为图像。目前我使用PIL平局线功能,像这样:
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')
我不知道是否有一个更快的方法来做到这一点。 (x,y)点是按照绘图顺序排列的,因此可能使用Image.putdata()
可以提供帮助吗?
'Image.putdata()'会要求你通过一些其他手段来创建像素数据,然后将它塞进一个'Image'对象,你想要做的,除非我怀疑你可以找到一些现有的模块来做到这一点(画线)。你正在用PIL做到最快的方式。 – martineau
但是注意['ImageDraw.line()'](http://pillow.readthedocs.io/en/4.3.x/reference/ImageDraw.html#PIL.ImageDraw.PIL.ImageDraw.ImageDraw.line)将接受在一次调用中调用坐标,所以你可以移除'for'循环并获得至少一些速度提升。 – martineau
摆脱'for'循环并尝试使用一个'draw.line(* zip(x,y),fill = 0,width = 2)'调用。 – martineau