Python Pillow 简明教程
Python Pillow - Working with Images
打开、写入、显示和保存图像是在使用 python pillow 库处理图像时的基本操作。Python Pillow 库为图像处理任务提供广泛的工具,为这些基本操作提供简单的函数和可自定义的选项。
在本教程中,你将学习使用 Pillow 库处理图像的重要方面,包括读取、显示、写入和保存图像。
Reading Images
读取图像是指打开和读取图像文件并将它们置于 Python 程序中以便于处理和操作的过程。
在 Pillow 中, Image 模块提供了函数 open() 以加载指定的输入图像。当我们调用 Image.open() 时,它会读取指定的图像文件,对图像进行解码,并创建一个表示该图像的 Pillow Image 对象。然后,该对象可以用于各种图像处理任务。
Reading images using open() function
Image.open() 函数能够加载不同的图像格式,例如 JPEG、PNG、GIF、BMP、TIFF、ICO 等。
以下是此函数的语法和参数。
PIL.Image.open(fp, mode='r', formats = None)
其中,
-
fp - 字符串格式内的图像文件名、路径或 URL。
-
mode (optional) - mode 参数用于将图像设置为打开模式,应将其指定为 r 。
-
formats (optional) - 要加载的格式列表或元组。这可以用作要加载的文件格式的限制。
此函数返回图像作为输出。在此处,为了显示图像,我们必须使用 Image 模块的 show() 函数。
Example
在此示例中,我们通过以字符串格式指定图像的路径并定义模式为 r 来加载图像。
from PIL import Image
#Load an image
loaded_image = Image.open("Images/butterfly.jpg", mode = 'r')
loaded_image.show()
#Saving the image
img.save("Output_Images/reading.png")
待使用的图像
Output
Example
在这个示例中,我们从图像 URL 加载图像。因此,要执行该操作,我们必须使用 urllib.request() 模块来读取图像 URL。
我们使用 urlretrieve() 模块的 urllib.request 函数从 URL 下载图像,并将图像保存在本地文件系统中,并指定文件名。
import urllib.request
from PIL import Image
url = "https://www.tutorialspoint.com/images/logo.png"
#Download the image using urllib
urllib.request.urlretrieve(url, "image.png")
#Open the downloaded image in PIL
loading_image = Image.open("image.png", mode = 'r')
#Show the image
loading_image.show()
Output
Writing Images
写入图像只不过是从头创建新的图像文件或修改现有的图像文件,例如绘图、像素操作和合成。然后可以使用其他 Pillow 函数和方法进一步处理生成图像或将其保存在磁盘中。
Writing images using new() method
可以使用 Image 模块的 new() 方法创建具有指定模式和大小的空白图像。这是一种生成具有所需特征的空白或未初始化图像的方法。
以下是 Image.new() 的语法 −
PIL.Image.new(mode, size, color)
其中,
-
mode − 此参数指定图像的色度模式,例如全彩色图像的“RGB”或灰度图像的“L”。可用模式取决于Pillow的版本和底层图像库的功能(例如,“RGB”、“RGBA”、“L”、“CMYK”等)。
-
size − 此参数是一个元组,用于指定图像的宽度和高度(以像素为单位)。例如,要创建一个像素大小为 300x200 的图像,我们可以使用“(300,200)”。
-
color' (optional) − 此参数指定图像的初始颜色。它是可选参数,并且可以是单个颜色值或多通道图像的元组。大多数模式的默认颜色是黑色。
Displaying Image
显示图像是指在屏幕上渲染图像,以便您可以查看它。Pillow 提供 show() 方法,用于使用系统的默认图像查看器显示图像。
Example
在这个示例中,我们使用 Image 模块的 show() 函数显示了 open() 函数的输出。
from PIL import Image
#Open an image
image = Image.open("Images/hand writing.jpg")
#Display the image using the default image viewer
image.show()
Output
Displaying Images in the Jupyter Notebook Environment
如果我们正在 Jupyter Notebook 环境中工作,那么可以使用 IPython display() 函数直接在 Notebook 中显示图像。
以下是 display() 函数的语法和参数 −
IPython.display.display(image_name)
其中,
-
image_name − 这是要显示的图像的名称。
Example
在这个示例中,我们使用 display() 函数显示 IPython.display 模块的图像。
from PIL import Image
from IPython.display import display
#Load the image
loading_image = Image.open("Images/tutorialspoint.png")
#Show the image
display(loading_image)
Output
Displaying in a GUI Application
如果我们正在构建图形用户界面 (GUI) 应用程序,那么我们可以使用 GUI 工具包,例如用于桌面应用程序的 Tkinter 或用于 Web 应用程序的 Flask 或 Django 等 Web 框架在用户界面中显示图像。
Example
在这个示例中,我们使用 PIL 模块的 ImageTk 方法显示图像输出。
import tkinter as tk
from PIL import Image, ImageTk
def display_image(image_path):
root = tk.Tk()
root.title("Image Viewer")
image = Image.open(image_path)
photo = ImageTk.PhotoImage(image)
label = tk.Label(root, image=photo)
label.image = photo
label.pack()
root.mainloop()
display_image("Images/tutorialspoint.png")
Output
Saving Images
在 Pillow 中保存图像指的是将打开的图像保存到内存中,并使其可以在 Python 程序中进行处理和修改。
Pillow 库的 Image 模块提供了 save() 方法,允许您将指定的图像对象保存到内存或本地系统的指定位置。
Saving images using save() function
save() 方法允许我们将打开的图像保存在不同的文件格式中,例如 JPG、PNG、PDF 等。此函数指定保存图像的各种选项,包括格式、质量和其他参数。
以下是此函数的语法和参数。
PIL.Image.save(file, format=None, **params)
其中,
-
file − 将图像保存到的文件路径或类似文件对象。
-
format(optional) − 用于保存图像的格式。如果未指定 Pillow 会尝试从文件扩展名中确定格式。
-
params(optional) − 依赖于我们保存图像的格式的附加参数。
此函数将图像连同指定的文件名保存在指定的位置。
Example
在这个示例中,我们使用 Pillow 库的 Image 模块的 open() 函数打开指定的图像。然后,通过将路径作为输入参数传递给 save() 函数,将打开的图像保存到指定的位置。
from PIL import Image
loading_image = Image.open("pillow.jpg")
#Show the image
loading_image.show()
#Save the image
loading_image.save("Images/saved_image.jpg")
print("Image saved")
Output
已加载的图像 −
保存的图像 −
Example
在此示例中,我们使用其他可选参数将图像保存到指定的位置。
from PIL import Image
#Load the image
loading_image = Image.open("Images/tutorialspoint.png")
#Show the image
loading_image.show()
#Save the image
loading_image.save("output Image/save_outputimg.png", format = "PNG", quality = 200)
print("Image saved")
Output
已加载的图像 −
保存的图像 −
我们可以使用 save() 方法以各种格式保存图像,并根据特定用例的需要控制质量和其他特定格式选项。