概述
在本教程中,我们将介绍如何使用Python进行基本的图像处理任务。我们将使用Pillow
库来加载、显示和修改图像。Pillow
是PIL
(Python Imaging Library)的一个分支,提供了丰富的图像处理功能。
安装 Pillow 库
首先,确保安装了Pillow
库。如果尚未安装,可以通过pip安装它:
pip install Pillow
加载图像
示例代码
加载一个图像文件,并显示它的基本信息。
from PIL import Image
def load_image(filename):
with Image.open(filename) as img:
# 获取图像的基本信息
format_ = img.format
mode = img.mode
size = img.size
# 显示图像
img.show()
return {
"format": format_,
"mode": mode,
"size": size
}
if __name__ == "__main__":
metadata = load_image("example.jpg")
print(f"Image format: {metadata['format']}")
print(f"Image mode: {metadata['mode']}")
print(f"Image size: {metadata['size']}")
运行结果
假设example.jpg
是位于脚本同一目录下的一张图片,运行上面的脚本会输出如下信息:
Image format: JPEG
Image mode: RGB
Image size: (800, 600)
并且会弹出一个窗口显示图像。
说明
-
Image.open():这是一个类方法,用于打开并加载一个图像文件。这里使用
with
语句来确保文件被正确关闭。 -
Image.format:返回图像的格式字符串,例如JPEG、PNG等。
-
Image.mode:返回图像的颜色模式,例如RGB、L(灰度)、CMYK等。
-
Image.size:返回一个元组,表示图像的宽度和高度,单位为像素。
-
Image.show():显示图像,这通常用于调试目的,因为实际应用中可能需要将图像保存到磁盘或发送到客户端。
修改图像尺寸
示例代码
接下来展示如何调整图像的尺寸。
from PIL import Image
def resize_image(filename, new_size):
with Image.open(filename) as img:
# 创建一个新的图像对象,指定新的尺寸
resized_img = img.resize(new_size, Image.ANTIALIAS)
resized_img.save("resized_" + filename)
print(f"Resized image saved as 'resized_{filename}'")
return resized_img.size
if __name__ == "__main__":
new_size = (400, 300)
new_size = resize_image("example.jpg", new_size)
print(f"New image size: {new_size}")
运行结果
运行上述脚本后,会在同一目录下生成一张名为resized_example.jpg
的新图片,其尺寸为400x300像素,并输出:
Resized image saved as 'resized_example.jpg'
New image size: (400, 300)
说明
-
Image.resize():这个方法创建一个新的图像,具有指定的尺寸。
Image.ANTIALIAS
选项用于提高缩放图像的质量。 -
Image.save():将图像保存到指定的文件名。这里我们通过添加前缀
resized_
来区分原始文件。
图像旋转
示例代码
演示如何旋转图像。
from PIL import Image
def rotate_image(filename, angle):
with Image.open(filename) as img:
# 旋转图像
rotated_img = img.rotate(angle, expand=True)
rotated_img.save("rotated_" + filename)
print(f"Rotated image saved as 'rotated_{filename}'")
return rotated_img.size
if __name__ == "__main__":
angle = 45
new_size = rotate_image("example.jpg", angle)
print(f"New image size: {new_size}")
运行结果
运行脚本后,会在同一目录下生成一张名为rotated_example.jpg
的新图片,该图片相对于原图旋转了45度,并输出:
Rotated image saved as 'rotated_example.jpg'
New image size: (600, 600)
说明
- Image.rotate():这个方法旋转图像。
expand=True
表示生成的新图像足以包含整个旋转后的图像,即使旋转角度不是90度的倍数。
颜色转换
示例代码
接下来展示如何将彩色图像转换为灰度图像。
from PIL import Image
def convert_to_grayscale(filename):
with Image.open(filename) as img:
# 转换为灰度模式
grayscale_img = img.convert('L')
grayscale_img.save("grayscale_" + filename)
print(f"Grayscale image saved as 'grayscale_{filename}'")
return grayscale_img.mode
if __name__ == "__main__":
mode = convert_to_grayscale("example.jpg")
print(f"New image mode: {mode}")
运行结果
运行脚本后,会在同一目录下生成一张名为grayscale_example.jpg
的新图片,该图片是原图的灰度版本,并输出:
Grayscale image saved as 'grayscale_example.jpg'
New image mode: L
说明
- Image.convert(mode):这个方法转换图像的颜色模式。这里我们使用
'L'
模式,表示将图像转换为灰度模式。
结论
通过以上示例,我们展示了如何使用Python的Pillow
库进行基本的图像处理操作。您可以根据需要扩展这些示例,添加更多的功能,如色彩调整、滤镜效果等。此外,您还可以探索Pillow
文档中的其他功能,以实现更复杂的图像处理任务。