完整的 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 是一个功能强大的图像处理库,提供了大量的图像操作方法。通过本教程,你学习了如何:

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

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

相关推荐
博观而约取17 分钟前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector2 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习2 小时前
Python入门Day2
开发语言·python
Vertira2 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉2 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗2 小时前
黑马python(二十四)
开发语言·python
晓13133 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr
是小王同学啊~3 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain
AIGC包拥它3 小时前
提示技术系列——链式提示
人工智能·python·langchain·prompt
孟陬3 小时前
Python matplotlib 如何**同时**展示正文和 emoji
python