1. PIL库介绍
PIL 是 Python 中最常用的图片处理库之一,全称为 Python Imaging Library。它提供了许多强大的图片处理工具,可以用它来获取、处理和保存图片,也可以用它来添加文字、线条等等。在 PIL 中,核心模块是 PIL.Image。实现了 PIL.Image 模块中定义的许多内置功能来让我们方便地操作单个图片。
PIL 内置的图像处理模块:
Image Module
ImageFilter Module
ImageChops Module
ImageStat Module
ImageDraw Module
ImageFont Module
ImageOps Module
其中,我们将介绍 ImageDraw 模块,这个模块允许你在图片上绘制各种形状和文本。使用 ImageDraw 模块,我们可以很容易地向图片上添加文本、线条、矩形、圆形等各种图形。
2. 安装PIL库
在安装 PIL 库之前,需要先安装 pip 工具,pip 是 python 的一个安装工具,类似于 npm 工具,它分发 python 库的工具。
可以通过以下命令安装 pip 工具:
sudo apt-get install python-pip
然后执行以下命令安装 PIL 库:
sudo pip install pillow
注意:PIL 库需要先在本地安装好。如果没有安装需要先安装好,在安装 pillow 库。
3. ImageDraw模块详解
在使用 ImageDraw 之前,需要先导入库:
from PIL import Image, ImageDraw, ImageFont
导入 ImageDraw 模块之后,我们就可以创建一个 ImageDraw 对象,用于向图片中添加线条、矩形、文本等内容。ImageDraw 模块中提供了很多函数,可以使我们很方便的操作图片。
3.1 使用ImageDraw添加文本
下面让我们来学习如何在图片中添加文本,在图片中添加文本需要两个步骤:
创建一个 ImageDraw 对象
调用 text 函数,在图片上添加文本
下面的示例展示了如何在图片上添加文本:
# 创建画布
img = Image.new('RGBA', (200, 200), 'white')
# 创建画笔
draw = ImageDraw.Draw(img)
# 添加文本
draw.text((50, 50), "HelloWorld", fill='red')
# 显示图片
img.show()
在这里,我们首先指定了图片的大小和颜色。然后,我们创建了一个 ImageDraw 对象,最后调用 text 函数在图片上添加文本。text 函数的第一个参数指定了文本的坐标,第二个参数是要添加的文本,第三个参数是文本的颜色。
3.2 使用ImageDraw添加线条
ImageDraw 还可以用于向图片中添加线条。我们可以使用 line 函数来添加线条。该函数需要接受两个点的坐标作为参数,表示线条的起始点和结束点。为了更加美观,我们可以为线条设置宽度和颜色。
下面的示例展示了如何向图片中添加一个十字架:
# 创建画布
img = Image.new('RGBA', (200, 200), 'white')
# 创建画笔
draw = ImageDraw.Draw(img)
# 添加线条
draw.line((0, 100, 200, 100), fill='red', width=2)
draw.line((100, 0, 100, 200), fill='red', width=2)
# 显示图片
img.show()
在这里,我们定义了两个线条,每一个线条的起始坐标和结束坐标。线条函数的第一个参数是一个元祖,包含了两个点的坐标,表示线条的起始点和结束点。第二个参数是线条的颜色,第三个参数是线条的宽度。
3.3 使用ImageDraw添加矩形
在 ImageDraw 中,使用 rect 函数可以轻松地添加矩形。rect 函数需要提供两个点的坐标,表示矩形的左上角坐标和右下角坐标。我们还可以为矩形指定颜色和宽度。
下面的示例展示了如何在图片上添加一个红色的矩形:
# 创建画布
img = Image.new('RGBA', (200, 200), 'white')
# 创建画笔
draw = ImageDraw.Draw(img)
# 添加矩形
draw.rectangle((0, 0, 50, 50), fill='red', outline='blue')
# 显示图片
img.show()
在这里,我们定义了矩形左下角的坐标和右上角的坐标,矩形函数的第一个参数是一个元祖,包含了矩形左下角和右上角的坐标。第二个参数是矩形的填充颜色,第三个参数是矩形的边框颜色。
3.4 使用ImageDraw添加圆形
ImageDraw 还可以用于添加圆形,使用 ellipse 函数可以添加一个圆形或者椭圆形。ellipse 函数需要提供两个点的坐标,表示椭圆形的左上角坐标和右下角坐标。还可以为圆形设置颜色和宽度。
下面的示例展示了如何在图片上添加一个红色的圆形:
# 创建画布
img = Image.new('RGBA', (200, 200), 'white')
# 创建画笔
draw = ImageDraw.Draw(img)
# 添加圆形
draw.ellipse((50, 50, 150, 150), fill='red', outline='blue')
# 显示图片
img.show()
在这里,我们首先定义了圆形的左下角和右上角的坐标。然后,我们调用 ellipse 函数在图片上添加了一个圆形。ellipse 函数的第一个参数是一个元祖,包含了圆形的左下角和右上角的坐标。第二个参数是圆形的填充颜色,第三个参数是圆形的边框颜色。
3.5 使用ImageDraw添加多边形
对于不规则图形,我们可以使用 polygon 函数添加多边形。polygon 函数需要提供多个点的坐标,表示多边形的各个顶点。我们还可以为多边形指定颜色和宽度。
下面的示例展示了如何在图片上添加多边形:
# 创建画布
img = Image.new('RGBA', (200, 200), 'white')
# 创建画笔
draw = ImageDraw.Draw(img)
# 添加多边形
draw.polygon([(100, 10), (50, 50), (150, 50)], fill='red', outline='blue')
# 显示图片
img.show()
在这里,我们首先定义了多边形各个顶点的坐标。然后,我们调用 polygon 函数在图片上添加了多边形。polygon 函数的第一个参数是由各个点的坐标构成的 sequence。
4. 结论
在本文中,我们学习了如何使用 Python 图像处理库 PIL 的 ImageDraw 模块。ImageDraw 模块允许我们在图片上绘制各种形状和文本。我们展示了如何在图片上添加文本、线条、矩形、圆形和多边形。我们还学习了如何设置填充颜色、边框颜色、宽度等参数,使得绘制的图形更加美观。