Python图像处理库PIL的ImageDraw模块介绍详解

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 模块允许我们在图片上绘制各种形状和文本。我们展示了如何在图片上添加文本、线条、矩形、圆形和多边形。我们还学习了如何设置填充颜色、边框颜色、宽度等参数,使得绘制的图形更加美观。

后端开发标签