使用PIL在图像上绘制线条

44

我想画一条线并将其显示出来,假设我有一张PIL图像。

draw = ImageDraw.Draw(pilImage)
draw.line((100,200, 150,300), fill=128)

如何展示图片?在画线之前,我可以这样做:

imshow(pilImage)

但是imshow(draw)没有显示图像。

我该如何将其转换回PIL图像?

1个回答

84

这应该可以运行:

from PIL import Image, ImageDraw
im = Image.new('RGBA', (400, 400), (0, 255, 0, 255)) 
draw = ImageDraw.Draw(im) 
draw.line((100,200, 150,300), fill=128)
im.show()
基本上使用ImageDraw在图像上绘制线条,然后在更改后显示该图像,要绘制粗线,请传递宽度。
draw.line((100,200, 150, 300), fill=128, width=3)

1
很好。我可以问一下如何画一条粗于一个像素的线吗? - eran
1
@Eran_Id 我找不到如何设置线条厚度,但是你可以使用多边形绘制粗线条。 - Anurag Uniyal
2
看起来你可以使用“宽度”选项画出粗线。类似于这里使用“填充”选项的方式。 - golmschenk
1
draw.line([(left, top), (left, bottom), (right, bottom), (right, top), (left, top)], width=3,fill=128) 你能告诉我这条语句是如何画出线条的吗?我有些困惑。 - SRIDHARAN
1
以上代码无法正常工作,因为在使用“RGBA”通道时,必须设置一个alpha值(用于不透明度:alpha值为255)。例如:fill=0x990000FF。或者直接使用“RGB”格式。 - Daniol Dan
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接