【问题标题】:how to draw a triangle with PIL?如何用 PIL 画一个三角形?
【发布时间】:2018-07-18 16:09:30
【问题描述】:

我正在尝试使用 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))

我收到了错误

TypeError: polygon() 为参数 'fill' 获得了多个值

有什么方法可以在不出现此错误的情况下制作三角形

python 2.7

【问题讨论】:

    标签: image python-2.7 pillow


    【解决方案1】:

    像这样:

    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')
    

    【讨论】:

    • 谢谢它的工作我只是缺少一组方括号的坐标
    • 请注意,如果点存储在一个numpy数组中,则需要将其转换为列表:draw.polygon(points.flatten().tolist(), fill=(255, 0, 0))。否则它不会绘制任何东西,甚至不会引发错误。
    【解决方案2】:

    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))

    缺少括号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2022-09-26
      • 2022-11-15
      相关资源
      最近更新 更多