我有一组从草图栅格化的坐标 (x,y):
x = [167, 109, 80, 69, 58, 31]
y = [140, 194, 227, 232, 229, 229]
我想重新创建那个草图并将其保存为图像。目前,我正在使用PIL绘制线条功能,如下所示:
from PIL import Image, ImageDraw
im = Image.new('L', (256, 256), 255)
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()
方法来帮助实现?
ImageDraw.line()
可以在单个调用中接受所有坐标,因此您可以删除for
循环并获得至少一些速度提升。 - martineaufor
循环,尝试使用单个draw.line(*zip(x, y), fill=0, width=2)
调用。 - martineaudraw.line(zip(x, y), fill=0, width=2)
对我有用(没有星号)。不确定它是否更快,但至少现在代码看起来非常整洁。请将您的评论转换为答案。如果在接下来的两天里没有人提供更好的解决方案,我会接受它。 - Tu Bui