Pillow,一个处理图像的 Python 库
安装
pip install pillow
基础使用
1.打开和保存图像
from PIL import Image
image = Image.open("ren22.jpg")
2.显示图像
# 使用默认的图像查看器打开图像 image.show()
3.获取图像信息
# 使用默认的图像查看器打开图像 print(image.size) # 获取图像的格式 print(image.format) # 获取图像的模式(如 RGB、RGBA 等) print(image.mode)
4. 裁剪一张500x500的图片
# 裁剪图像(左上角坐标(0,0)和右下角坐标(500,500))
cropped_image = image.crop((0, 0, 500, 500))
cropped_image.save("cropped.jpg")
5.旋转图像
# 旋转图像
rotated_image = image.rotate(90) # 顺时针旋转90度
rotated_image.save("rotated.jpg")
6.调整图像大小
# 调整图像大小
resized_image = image.resize((800, 600))
resized_image.save("resized.jpg")
7.添加滤镜
模糊滤镜:用于降低图像细节和噪声,适合降噪和艺术效果。
边缘增强滤镜:用于突出图像的边缘信息,适合提高图像清晰度和目标检测。
from PIL import Image
from PIL import ImageFilter
image = Image.open("ren22.jpg")
# 应用均值模糊
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_image.jpg")
# 应用高斯模糊
blurred_image = image.filter(ImageFilter.GaussianBlur(radius=5))
blurred_image.save("gaussian_blurred_image.jpg")
# 应用边缘增强滤镜
edge_enhanced_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_enhanced_image.save("edge_enhanced.jpg")
# 更强的边缘增强
edge_enhanced_more = image.filter(ImageFilter.EDGE_ENHANCE_MORE)
edge_enhanced_more.save("edge_enhanced_more.jpg")
8.转换图像模式
Pillow 支持多种颜色模式,以下是一些常见的颜色模式及其含义:
| 分类 | 模式代码 | 说明 |
| 单通道模式 | "L" | 灰度模式,每个像素的值表示其亮度(0 表示黑色,255 表示白色)。 |
| 单通道模式 | "1" | 二值模式,每个像素的值为0或1(表示黑白)。 |
| 单通道模式 | "P" | 调色板模式,每个像素的值是一个索引,对应调色板中的颜色。 |
| 三通道模式 | "RGB" | 红绿蓝模式,每个像素由红、绿、蓝三个通道的值组成(范围0到25)。 |
| 三通道模式 | "HSV" | 色调(Hue)、饱和度(Saturation)、亮度(Value)模式。 |
| 三通道模式 | "YCbCr" | 亮度(Y)、蓝色差(Cb)、红色差(Cr)模式,常用于视频处理。 |
| 四通道模式 | "RGBA" | 红绿蓝透明度模式,包含一个额外的透明度通道(Alpha)。 |
| 四通道模式 | "CMYK" | 青(cyan)、洋红(Magenta)、黄(Yellow)、黑(Key)模式,常用于印刷。 |
| 其他模式 | "CMYK" | CIE Lab* 颜色空间,用于颜色校正和图像处理。 |
| 其他模式 | "CMYK" | 32 位整数模式,用于存储科学数据。 |
| 其他模式 | "CMYK" | 32位浮点数模式,用于存储高精度数据。 |
# 转换为灰度图像
gray_image = image.convert("L")
gray_image.save("gray.jpg")
# 转换为 RGBA 模式
rgba_image = image.convert("RGBA")
rgba_image.save("rgba.png")
9.创建新图像
# 创建一个白色背景的图像
new_image = Image.new("RGB", (400, 400),"white")
new_image.save("new_image.jpg")
10.绘制图像
from PIL import Image, ImageDraw
# 创建一个图像
image = Image.new("RGB", (400, 400), "white")
# 创建一个绘制对象
draw = ImageDraw.Draw(image)
# 绘制一个矩形
draw.rectangle((50, 50, 300, 300), outline="black", fill="red")
# 绘制一个圆形
draw.ellipse((100, 100, 200, 200), outline="blue", fill="green")
# 绘制一条线
draw.line((50, 50, 300, 300), fill="black", width=5)
# 保存图像
image.save("drawn_image.jpg")
高级功能
1. 图像合成
from PIL import Image
image1 = Image.open("output.jpg")
image2 = Image.open("drawn_image.jpg")
# 将 image2 覆盖到 image1 上
image1.paste(image2, (100, 100))
image1.save("combined.jpg")
2. 图像增强
from PIL import Image, ImageEnhance
image = Image.open("output.jpg")
# 调整亮度
enhancer = ImageEnhance.Brightness(image)
brightened_image = enhancer.enhance(1.5) # 增加亮度
brightened_image.save("brightened.jpg")
# 调整对比度
enhancer = ImageEnhance.Contrast(image)
contrasted_image = enhancer.enhance(1.5) # 增加对比度
contrasted_image.save("contrasted.jpg")
3. 图像分割
from PIL import Image
image = Image.open("output.jpg")
# 分离通道
r, g, b = image.split()
# 显示单个通道
r.save("red_channel.jpg")
g.save("green_channel.jpg")
b.save("blue_channel.jpg")
注意事项
- 图像模式:在进行某些操作时,需要确保图像的模式与操作兼容(例如,灰度图像不能直接应用某些
RGB滤镜)。 - 资源释放:使用
Image.open()打开图像后,建议在完成操作后关闭图像文件,以释放资源:
image.close()
Pillow 的官方文档来了解更多高级用法:
https://pillow.readthedocs.io/en/stable/

浙公网安备 33010602011771号