Python PIL 多边形绘制函数 ``polygon()`` 语法与实战


发布日期 : 2021-10-29 01:09:31 UTC

访问量: 10 次浏览

draw.polygon

draw.polygon

draw.polygon 是Python中 PIL(Python Imaging Library)库的一个函数,用于绘制多边形。
本文将详细介绍 draw.polygon 函数的用法和一些示例。

1. draw.polygon 函数的语法

draw.polygon 函数的语法如下:

draw.polygon(xy, fill=None, outline=None)
  • xy 参数是一个二维列表,包含多边形的顶点坐标。每一个顶点坐标是一个元组 (x, y),表示点的x坐标和y坐标。xy 列表的顺序决定了多边形的边界。多边形可以是简单的多边形(所有边界之间没有交叉),也可以是复杂的多边形(边界之间可以交叉)。
  • fill 参数用于指定多边形的填充颜色。可以是颜色名称(如 "red""blue")或RGB颜色值(如 (255, 0, 0) 表示红色)。
  • outline 参数用于指定多边形的边界颜色,使用方式与 fill 参数相同。

2. 示例代码

下面是一个简单的示例代码,演示了如何使用 draw.polygon 函数绘制一个三角形:

from PIL import Image, ImageDraw

# 创建一个画布,大小为300x300像素,白色背景
image = Image.new("RGB", (300, 300), "white")

# 创建一个Draw对象
draw = ImageDraw.Draw(image)

# 定义多边形的顶点坐标
xy = [(50, 50), (250, 50), (150, 250)]

# 绘制多边形
draw.polygon(xy, fill="red", outline="blue")

# 保存图片
image.save("triangle.png")

运行上述代码后,会生成一个名为 triangle.png 的图片文件,其中包含了一个填充为红色、边界为蓝色的三角形。

3. 多边形的绘制和填充

draw.polygon 函数可以用于绘制任意的多边形,无论是简单的三角形、矩形,还是复杂的多边形。只需要给出多边形的顶点坐标,draw.polygon 函数就能自动根据这些坐标绘制出多边形。

并且,通过设置 fill 参数和 outline 参数,可以控制多边形的填充颜色和边界颜色。填充颜色可以是颜色名称或RGB颜色值,边界颜色同样也可以是颜色名称或RGB颜色值。

下面是一个更复杂的示例代码,演示了如何使用 draw.polygon 函数绘制一个五边形:

from PIL import Image, ImageDraw

# 创建一个画布,大小为500x500像素,白色背景
image = Image.new("RGB", (500, 500), "white")

# 创建一个Draw对象
draw = ImageDraw.Draw(image)

# 定义多边形的顶点坐标
xy = [(250, 50), (400, 200), (350, 400), (150, 400), (100, 200)]

# 绘制多边形,填充为蓝色,边界为红色
draw.polygon(xy, fill="blue", outline="red")

# 保存图片
image.save("pentagon.png")

运行上述代码后,会生成一个名为 pentagon.png 的图片文件,其中包含了一个填充为蓝色、边界为红色的五边形。

4. 使用 draw.polygon 绘制更复杂的图形

draw.polygon 函数并不仅限于绘制简单的三角形、矩形或五边形。通过设置不同的顶点坐标,可以绘制出任意复杂的多边形。

下面是一个示例代码,演示了如何使用 draw.polygon 函数绘制一个六芒星:

from PIL import Image, ImageDraw, ImageColor

# 创建一个画布,大小为500x500像素,黑色背景
image = Image.new("RGB", (500, 500), "black")

# 创建一个Draw对象
draw = ImageDraw.Draw(image)

# 定义六芒星的顶点坐标
triangle_up = [(250, 50), (400, 200), (100, 200)]
triangle_down = [(250, 450), (400, 300), (100, 300)]
hexagram = triangle_up + triangle_down

# 使用不同颜色填充每个三角形
colors = ["red", "green", "blue", "yellow", "cyan", "magenta"]
for i, xy in enumerate(hexagram):
    draw.polygon(xy, fill=ImageColor.getrgb(colors[i]))

# 保存图片
image.save("hexagram.png")

运行上述代码后,会生成一个名为 hexagram.png 的图片文件,其中包含了一个六芒星图形,每个三角形的填充颜色不同。
Note: The hexagram example above contains a bug. enumerate(hexagram) iterates over individual coordinate tuples (6 points), not the two triangles. To fix it, split the hexagram into two separate draw.polygon calls:

python
draw.polygon(triangle_up, fill="red")
draw.polygon(triangle_down, fill="blue")

5. 小结

通过 draw.polygon 函数,我们可以在Python中使用 PIL 库绘制多边形。
只需要给出多边形的顶点坐标,就可以绘制出任意形状的多边形,并且可以通过设置填充颜色和边界颜色来美化多边形图形。