如何使用PIL绘制一个三角形?

4
我正在尝试使用PIL ImageDraw绘制三角形,以下是我的代码:
    t1 = int(tri[0])
    t2 = int(tri[1])
    t3 = int(tri[2])
    t4 = int(tri[3])
    t5 = int(tri[4])
    t6 = int(tri[5])
    t7 = int(tri[6])
    t8 = int(tri[7])
    t9 = int(tri[8])
    t10 = int(tri[9])
    draw.polygon((t1,t2),(t3,t4),(t5,t6), fill=(t7,t8,t9,t10))

我遇到了错误:

类型错误:polygon()的参数'fill'有多个值

有没有什么方法可以避免这个错误,制作一个三角形?

Python 2.7

2个回答

9

像这样:

from PIL import Image,ImageDraw

# Create empty black canvas
im = Image.new('RGB', (255, 255))

# Draw red and yellow triangles on it and save
draw = ImageDraw.Draw(im)
draw.polygon([(20,10), (200, 200), (100,20)], fill = (255,0,0))
draw.polygon([(200,10), (200, 200), (150,50)], fill = 'yellow')

im.save('result.png')

enter image description here


谢谢,它起作用了,我只是忘记加坐标的方括号了。 - gokul gupta
请注意,如果点存储在numpy数组中,则需要将其转换为列表:draw.polygon(points.flatten().tolist(), fill=(255, 0, 0))。否则它将不会绘制任何内容,甚至不会引发错误。 - ketza

0

draw.polygon(((t1,t2),(t3,t4),(t5,t6)), fill=(t7,t8,t9,t10))

应该改为

draw.polygon((t1,t2),(t3,t4),(t5,t6), fill=(t7,t8,t9,t10))

缺少括号


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