Python Pillow – ImageDraw模块
Python的Pillow是已停用的Python Imaging Library(PIL)的分叉,是一个强大的库,能够为你的Python代码增加图像处理能力。Pillow提供了许多模块,以减轻工作和修改图像的过程。
在这篇文章中,我们将看一下这个库的ImageDraw模块。ImageDraw提供了各种方法,正如它的名字所暗示的,在图像上绘图。在这个模块的帮助下,我们可以在图像上画线、画圆、画矩形,甚至可以在图像上书写和格式化文本。
在图像上绘制常见的形状
我们将使用的图像可以用PIL显示,如下所示。
输出
输出的图像如下
我们可以使用 “画图 “方法在图像上绘制形状和数字,首先创建一个 “画图 “对象。
在图像上画一个矩形
对于绘制矩形,我们使用ImageDraw模块的矩形绘制方法。
语法: ImageDraw.rectangle(xy, fill, outline, width)
这个方法的参数是:
- xy : 对应于包围你的形状的左上角和右下角坐标的点集的元组。这些点是以一个元组的形式传递的,如下所示。(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标)
- fill : 对应于用于填充形状的RGB颜色值的元组。
- outline : 对应于为形状的边界分配的RGB颜色值的元组。
- width : 对应于形状边界厚度的整数值。注意:这些参数在各种形状绘制方法中是相似的。
输出:
矩形方法的输出图像
在图像上画一个椭圆(圆形)
为了绘制一个椭圆形状,我们使用ImageDraw方法中的椭圆方法。
语法: ImageDraw.ellipse(xy, fill, outline, width)
你将提供的xy坐标将作为一个盒子,圆将被围在其中。
输出:
椭圆法的输出图像
在图像上画一条线
为了画一条线,我们使用ImageDraw方法中的线方法。
语法: lImageDraw.ine(xy, fill, width)
在这里,不考虑轮廓参数,宽度将决定线条应该有多长。
输出:
线条法的输出图像
在图像上画一个多边形
我们可以通过使用ImageDraw方法中的polygon方法来绘制一个所需形状的多边形。
语法: ImageDraw.polygon(xy, fill, outline)
xy元组参数将包含基于你想要的形状的边数的坐标。这里,宽度参数是无效的。
输出:
多边形方法的输出图像
类似地,我们可以用这些方法画一些其他的形状:
- Arc: ImageDraw.arc(xy, start, end, fill, width)
- 弦(弓形)。ImageDraw.chord(xy, start, end, fill, outline, width)
- Point: ImageDraw.point(xy, fill)
- Pieslice: ImageDraw.pieslice(xy, start, end, fill, outline, width)
起点和终点参数对应于顺时针方向的角度程度,将用一条线连接。
在图像上书写文字
使用我们的Draw对象,我们也可以在图像上写文字。它可以用Text方法来完成。
语法: ImageDraw.text(xy, text, fill, font, anchor, spacing, align, direction, features, language, stroke_width, stroke_fill, embedded_color)
我们还将使用PIL的ImageFont来为我们的文本使用所需的字体。
输出:
文本方法的输出图像