我有一组从草图光栅化的 (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()
可能会有所帮助?
最佳答案
这或多或少演示了我在注释中建议的关于能够绘制整个仅使用一次 draw.line()
调用来绘制线条。
优点是它需要更少的代码,并且可能稍微更快(即使这在测试数据中并不明显)。
try:
from itertools import izip
except ImportError: # Python 3
izip = zip
from PIL import Image, ImageDraw
x = [167, 109, 80, 69, 58, 31]
y = [140, 194, 227, 232, 229, 229]
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)
draw.line(list(izip(x, y)), fill=0, width=2) # Draws entire line.
#im.save('test.png')
im.show() # Display the image.
关于python - 使用 PIL 绘制图像的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46614294/