Python Pillow - 处理图像

本章详细介绍了一些主题,包括如何在 Pillow 中读取和保存图像。


读取图像

借助PIL.Image 模块函数,使用pillow库读写图像非常简单。

语法

Image.open(fp, mode=’r’)

这里

  • fp − 文件名(字符串)、pathlib.Path 对象或文件对象。 文件对象必须实现 read()、seek() 和 tell() 方法,并以二进制模式打开。

  • mode − 这是一个可选参数,如果给定,则必须是"r"。

  • Return value − 一个图像对象。

  • Error − 如果找不到文件,或者图像无法打开识别。

示例

以下是一个非常简单的示例,我们将打开任何格式的图像(我们使用的是 .jpg),将其显示在窗口中,然后将其保存(默认位置) 另一种文件格式 (.png)。

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

在上面的示例中,我们从 PIL 库中导入图像模块,然后调用 Image.open() 函数从磁盘读取图像,该函数返回图像对象数据类型。它将通过查看文件内容自动确定文件类型。 对于读取,open() 函数接受一个filename(string)、一个path object(路径对象) 或一个image(file) 对象。

因此,通过使用 open() 函数,我们实际上是在读取图像。 Image.open() 将读取图像并从图像中获取所有相关信息。

输出

如果将上述程序保存为 Example.py 并执行,它会使用标准 PNG 显示实用程序显示原始 (.jpg) 和重新保存 (.bmp) 图像,如下所示 −

实际图像

原始

重新保存的图像 (.bmp)

重新保存的图像

保存图像

save() 函数将图像写入文件。 与读取(open() 函数)一样,save() 函数接受文件名、路径对象或已打开写入的文件对象。

语法

Image.save(fp, format=None, **params)

这里,

  • fp − 文件名(字符串)、pathlib.Path 对象或文件对象。

  • format − 可选的格式覆盖。 如果省略,则使用的格式由文件扩展名确定。 如果使用文件对象而不是文件名,则应始终使用此参数。

  • options − 图像编写器的额外参数。

  • Return value − None

  • KeyError − 如果无法根据文件名确定输出格式,请使用格式选项解决此问题。

  • IOError − 如果无法写入文件,则文件可能已创建,并且可能包含部分数据。

简而言之,上面的语法会将图像保存在给定的文件名下。 如果未指定格式,则它基于当前文件扩展名。 为了提供额外的说明,我们使用 keyword 关键字选项。

image.save('beach1.bmp')

在上面的例子中,它根据文件扩展名来确定图像类型来保存文件,例如 - 上面将在我们当前的工作目录中创建一个 bmp 文件。

你也可以明确指定文件类型作为第二个参数 −

image.save('beach1.gif', 'GIF')