📜  Python PIL | ImageDraw.Draw.polygon() 方法

📅  最后修改于: 2022-05-13 01:54:56.910000             🧑  作者: Mango

Python PIL | ImageDraw.Draw.polygon() 方法

PIL 是Python Imaging Library,它为Python解释器提供了图像编辑功能。 ImageDraw模块为 Image 对象提供简单的 2D 图形。您可以使用此模块创建新图像、注释或修饰现有图像,以及动态生成图形以供 Web 使用。

ImageDraw.Draw.polygon()绘制一个多边形。
多边形轮廓由给定坐标之间的直线以及最后一个坐标和第一个坐标之间的直线组成。

import math
from PIL import Image, ImageDraw
from PIL import ImagePath 
  
side = 8
xy = [
    ((math.cos(th) + 1) * 90,
     (math.sin(th) + 1) * 60)
    for th in [i * (2 * math.pi) / side for i in range(side)]
    ]  
  
image = ImagePath.Path(xy).getbbox()  
size = list(map(int, map(math.ceil, image[2:])))
  
img = Image.new("RGB", size, "# f9f9f9") 
img1 = ImageDraw.Draw(img)  
img1.polygon(xy, fill ="# eeeeff", outline ="blue") 
  
img.show()

输出:

另一个例子:采用不同的参数。

import math
from PIL import Image, ImageDraw
from PIL import ImagePath 
  
side = 6
xy = [
    ((math.cos(th) + 1) * 90,
     (math.sin(th) + 1) * 60)
    for th in [i * (2 * math.pi) / side for i in range(side)]
    ]  
  
image = ImagePath.Path(xy).getbbox()  
size = list(map(int, map(math.ceil, image[2:])))
  
img = Image.new("RGB", size, "# f9f9f9") 
img1 = ImageDraw.Draw(img)  
img1.polygon(xy, fill ="# eeeeff", outline ="blue") 
  
img.show()

输出: