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/

posted @ 2025-06-06 15:30  北京测试菜鸟  阅读(60)  评论(0)    收藏  举报