完整的 Pillow 使用教程

Pillow 是 Python 的一个图像处理库,它是 Python Imaging Library(PIL)的一个分支和升级版本。Pillow 提供了多种图像处理功能,包括打开、操作和保存图像格式的支持。通过本教程,你将学习如何使用 Pillow 进行常见的图像处理操作。


1. 安装 Pillow

首先,确保你已经安装了 Pillow。如果没有安装,可以使用以下命令:

bash 复制代码
pip install Pillow

2. 导入 Pillow 模块

在 Python 中,使用 Pillow 时通常需要导入 PIL 库的 ImageImageDraw 模块。

python 复制代码
from PIL import Image, ImageDraw, ImageFont

3. 打开和显示图像

要加载和显示图像,可以使用 Image.open() 方法打开图像文件,并使用 show() 方法显示图像。

python 复制代码
# 打开图像
image = Image.open('example.jpg')

# 显示图像
image.show()

Image.open() 方法接受图像文件的路径作为参数,并返回一个 Image 对象。show() 方法会调用默认的图片查看器显示图像。


4. 图像的基本操作

4.1 获取图像尺寸

使用 size 属性可以获取图像的宽度和高度。

python 复制代码
# 获取图像尺寸
width, height = image.size
print(f"图像宽度: {width}, 图像高度: {height}")
4.2 改变图像大小

使用 resize() 方法可以改变图像的尺寸。

python 复制代码
# 改变图像大小
new_image = image.resize((400, 400))
new_image.show()

resize() 方法中,你需要提供一个元组,表示新的尺寸(宽度, 高度)。

4.3 剪裁图像

使用 crop() 方法可以剪裁图像,裁剪的区域由左、上、右、下坐标组成。

python 复制代码
# 剪裁图像
cropped_image = image.crop((50, 50, 300, 300))
cropped_image.show()

这个代码会剪裁一个从 (50, 50) 到 (300, 300) 的矩形区域。

4.4 旋转图像

使用 rotate() 方法可以旋转图像,旋转角度是以逆时针方向为正。

python 复制代码
# 旋转图像
rotated_image = image.rotate(90)  # 逆时针旋转90度
rotated_image.show()
4.5 翻转图像

通过 transpose() 方法可以实现水平或垂直翻转图像。

python 复制代码
# 水平翻转
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_image.show()

# 垂直翻转
flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_image.show()

5. 图像滤镜

Pillow 提供了一些常用的图像滤镜,可以通过 ImageFilter 模块使用。

python 复制代码
from PIL import ImageFilter

# 应用模糊滤镜
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.show()

# 应用锐化滤镜
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.show()

# 应用边缘增强滤镜
edges_image = image.filter(ImageFilter.EDGE_ENHANCE)
edges_image.show()

你可以使用不同的滤镜效果来增强或改变图像的效果。


6. 操作图像颜色

Pillow 提供了处理图像颜色的功能,例如转换颜色模式、调整对比度和亮度等。

6.1 转换颜色模式

你可以使用 convert() 方法转换图像的颜色模式。例如,从 RGB 转为灰度图像:

python 复制代码
# 转为灰度图
grayscale_image = image.convert("L")
grayscale_image.show()

convert() 方法中,你可以传递不同的模式,如:

  • "RGB":彩色图像
  • "L":灰度图像
  • "RGBA":带透明度的图像
6.2 调整亮度和对比度

使用 ImageEnhance 模块来增强图像的亮度、对比度和色彩。

python 复制代码
from PIL import ImageEnhance

# 调整亮度
enhancer = ImageEnhance.Brightness(image)
bright_image = enhancer.enhance(1.5)  # 增加50%的亮度
bright_image.show()

# 调整对比度
enhancer = ImageEnhance.Contrast(image)
high_contrast_image = enhancer.enhance(2)  # 提高对比度
high_contrast_image.show()

enhance() 方法的参数通常是一个浮动值,1.0 表示原始效果,值大于 1.0 表示增强,值小于 1.0 表示减弱。


7. 绘制和添加文字

Pillow 还允许你在图像上绘制内容,例如绘制线条、矩形、文字等。

7.1 创建绘图对象
python 复制代码
# 创建一个绘图对象
draw = ImageDraw.Draw(image)
7.2 绘制线条和矩形
python 复制代码
# 绘制直线
draw.line((50, 50, 200, 200), fill=(255, 0, 0), width=5)

# 绘制矩形
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
7.3 绘制文本

你可以使用 ImageFont 加载字体文件来绘制文本:

python 复制代码
# 加载字体
font = ImageFont.truetype("arial.ttf", 36)

# 绘制文字
draw.text((100, 100), "Hello, Pillow!", fill="white", font=font)
image.show()

这里的 ImageFont.truetype() 方法接受字体文件路径和字体大小。你可以选择其他字体和大小来调整文本样式。


8. 图像保存

使用 save() 方法保存图像。你可以保存为不同的格式,如 JPG、PNG、GIF 等。

python 复制代码
# 保存为 PNG 格式
image.save("output_image.png")

# 保存为 JPG 格式
image.save("output_image.jpg")

如果需要转换图像格式,可以在 save() 方法中指定目标格式。


9. 图像合成

Pillow 还提供了图像合成的功能。你可以将多个图像合成一个图像。

9.1 拼接图像
python 复制代码
# 将两个图像拼接在一起
image1 = Image.open('image1.jpg')
image2 = Image.open('image2.jpg')

# 假设两个图像的宽度相同,可以按垂直方向拼接
combined_image = Image.new('RGB', (image1.width, image1.height + image2.height))
combined_image.paste(image1, (0, 0))
combined_image.paste(image2, (0, image1.height))

combined_image.show()
9.2 图像混合

使用 Image.blend() 方法将两个图像进行混合。

python 复制代码
# 混合两个图像
image1 = Image.open('image1.jpg')
image2 = Image.open('image2.jpg')

blended_image = Image.blend(image1, image2, alpha=0.5)
blended_image.show()

这里的 alpha 参数控制图像混合的程度,值越大,image2 的影响越大。


10. 进阶功能

10.1 处理透明度

通过 RGBA 模式,你可以处理图像的透明度。A 表示透明度通道(Alpha)。

python 复制代码
# 创建透明背景图像
image = Image.new("RGBA", (400, 400), (255, 255, 255, 0))
image.show()
10.2 动画图像

Pillow 也支持 GIF 动画的创建和操作。

python 复制代码
# 加载 GIF 动画
gif = Image.open("animation.gif")

# 获取 GIF 的帧数
frames = gif.n_frames

# 显示 GIF 中的所有帧
for frame in range(frames):
    gif.seek(frame)
    gif.show()

11. 总结

Pillow 是一个功能强大的图像处理库,提供了大量的图像操作方法。通过本教程,你学习了如何:

  • 打开、显示、保存图像
  • 改变图像大小、裁剪、旋转和翻转
  • 使用图像滤镜和调整图像颜色
  • 在图像上绘制文本、线条和形状
  • 合成图像和处理透明度

你可以根据自己的需求,结合这些功能,创建更加复杂的图像处理应用。

相关推荐
金融OG1 分钟前
100.13 AI量化面试题:支持向量机(SVM)如何处理高维和复杂数据集?
人工智能·python·算法·机器学习·支持向量机·数学建模·金融
不能只会打代码29 分钟前
Python人工智能技术全景:从基础框架到DeepSeek的突破性创新
开发语言·人工智能·python·deepseek
GISer Liu2 小时前
使用DeepSeek构建Camel多智能体框架:基本环境配置
人工智能·python·机器学习·datawhale·camel·aiagent·deepseek
ONE_PUNCH_Ge2 小时前
Python 量化
开发语言·python
Mr-Wanter2 小时前
使用 JFreeChart 创建动态图表:从入门到实战
开发语言·python·信息可视化
Ronin-Lotus2 小时前
图像处理篇---基本Python图像处理
图像处理·人工智能·python·opencv·计算机视觉
岁月如歌,青春不败2 小时前
无人机生态环境监测、图像处理与GIS数据分析
图像处理·数据分析·gis·无人机·生态学·激光雷达·环境科学
Channing Lewis2 小时前
flask如何进行测试
后端·python·flask
m0_748245743 小时前
Java 进阶day14XML Dom4j 工厂模式 Base64
java·开发语言·python