Python Imaging Library (PIL) 全面指南:PIL基础入门-构建简易图像编辑器

发布于:2025-08-30 ⋅ 阅读:(15) ⋅ 点赞:(0)

项目实践:构建简易图像编辑器

学习目标

通过本课程,学员将学习如何使用PIL(Python Imaging Library)构建一个简易的图像编辑器。我们将从图像的基本操作开始,逐步深入到图像的高级处理技术,最终完成一个功能齐全的图像编辑器。

相关知识点

  • PIL构建简易图像编辑器

学习内容

1 PIL构建简易图像编辑器

1.1 图像的基本操作

在开始构建图像编辑器之前,首先需要掌握PIL中图像的基本操作,包括打开、显示、裁剪、旋转和调整大小等。这些基本操作是构建任何图像处理应用的基础。

1.1.1 打开和显示图像

使用PIL打开和显示图像非常简单。首先,学员需要安装PIL库,可以通过pip安装Pillow,Pillow是PIL的一个活跃分支,提供了更多的功能和更好的兼容性。

%pip install pillow==11.0.0
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/cf80fed82efc11f0a5c1c0d193714e3c/example.jpg
from PIL import Image

# 打开图像
img = Image.open('example.jpg')

# 显示图像
img.show()

在这里插入图片描述
这段代码首先从PIL库中导入了Image模块,然后使用Image.open()方法打开指定路径的图像文件。最后,使用img.show()方法显示图像。

1.1.2 裁剪图像

裁剪图像可以让学员从原始图像中提取出特定的区域。这在处理图像时非常有用,例如,学员可能需要从一张大图中提取出人脸部分。

# 裁剪图像
left = 100
top = 50
right = 300
bottom = 300
cropped_img = img.crop((left, top, right, bottom))

print(cropped_img.size)

# # 显示图像
cropped_img.show()

在这里插入图片描述
在上述代码中,crop()方法接受一个四元组作为参数,分别表示裁剪区域的左、上、右、下边界。裁剪后的图像可以通过show()方法显示。

1.1.3 旋转和调整大小

旋转图像和调整图像大小也是常见的图像处理操作。PIL提供了简单的方法来实现这些功能。

# 旋转图像
rotated_img = img.rotate(90)
rotated_img.show()

width = 300
height = 300
# 调整大小
resized_img = img.resize((width, height))
resized_img.show()

在这里插入图片描述
在这里插入图片描述
rotate()方法接受一个角度参数,表示图像旋转的角度。resize()方法接受一个二元组,表示新的宽度和高度。

1.2 图像的滤镜效果

图像滤镜可以用来改变图像的视觉效果,例如模糊、锐化、边缘检测等。PIL提供了多种内置的滤镜,可以轻松地应用到图像上。

1.2.1 应用模糊滤镜

模糊滤镜可以用来减少图像的细节,使图像看起来更加柔和。

from PIL import ImageFilter

# 应用模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.show()

在这里插入图片描述
filter()方法接受一个滤镜对象作为参数。ImageFilter.BLUR是一个预定义的模糊滤镜。

1.2.2 应用锐化滤镜

锐化滤镜可以增强图像的细节,使图像看起来更加清晰。
在这里插入图片描述

ImageFilter.SHARPEN是一个预定义的锐化滤镜。

1.3 图像的格式转换与保存

在处理图像时,学员可能需要将图像转换为不同的格式,或者将处理后的图像保存到文件中。PIL提供了简单的方法来实现这些功能。

1.3.1 转换图像格式

PIL支持多种图像格式,可以轻松地将图像从一种格式转换为另一种格式。

# 转换图像格式
img = img.convert('L')  # 转换为灰度图像
img.show()

在这里插入图片描述
convert()方法接受一个字符串参数,表示目标格式。例如,'L'表示灰度图像。

1.3.2 保存图像

处理完图像后,可以将图像保存到文件中,以便后续使用。

# 保存图像
img.save('output.jpg')

网站公告

今日签到

点亮在社区的每一天
去签到