PIL(Python Imaging Library) 是 Python 中经典的图像处理库,用于打开、操作和保存多种图像格式(如 JPEG、PNG、BMP、GIF 等)。虽然原版 PIL 已停止维护,但其分支 Pillow 兼容并扩展了 PIL 的功能,成为现代 Python 图像处理的标准库。以下是核心概念和常用函数的详解:
一、PIL/Pillow 的核心概念
-
图像对象 (
Image
类)
所有图像操作基于Image
对象,通过Image.open()
加载图像后,可以对其进行裁剪、缩放、旋转、滤镜处理等操作。 -
图像模式
图像数据以不同模式存储,如:-
RGB
(红绿蓝三通道) -
RGBA
(RGB + 透明度) -
L
(灰度图) -
1
(二值图,黑白)
-
-
坐标系统
左上角为原点(0, 0)
,向右为 x 轴正方向,向下为 y 轴正方向。
二、核心模块与常用函数
1. Image
模块(图像基础操作)
函数/方法 | 功能 | 示例 |
---|---|---|
Image.open(filepath) | 打开图像文件并返回 Image 对象 | img = Image.open("image.jpg") |
img.save(filepath, format) | 保存图像(可指定格式) | img.save("output.png", "PNG") |
img.resize((width, height)) | 调整图像尺寸 | img_resized = img.resize((800, 600)) |
img.crop((left, top, right, bottom)) | 裁剪图像区域(矩形坐标) | img_cropped = img.crop((100, 100, 400, 300)) |
img.rotate(angle) | 旋转图像(逆时针角度) | img_rotated = img.rotate(45) |
img.convert(mode) | 转换图像模式(如 RGB→L) | gray_img = img.convert("L") |
img.thumbnail((max_w, max_h)) | 生成缩略图(保持比例) | img.thumbnail((200, 200)) |
img.paste(img2, position) | 将另一图像粘贴到当前图像 | img.paste(img2, (50, 50)) |
2. ImageDraw
模块(绘图功能)
用于在图像上绘制几何图形或文字:
from PIL import Image, ImageDraw
# 创建绘图对象
draw = ImageDraw.Draw(img)
# 常用方法
draw.rectangle((x1, y1, x2, y2), fill="red") # 绘制矩形
draw.text((x, y), "Hello", fill="white") # 绘制文字
draw.line((x1, y1, x2, y2), fill="blue") # 绘制线段
3. ImageFilter
模块(图像滤镜)
应用预定义滤镜增强或处理图像:
from PIL import ImageFilter
# 常用滤镜
img_blur = img.filter(ImageFilter.BLUR) # 模糊
img_sharp = img.filter(ImageFilter.SHARPEN) # 锐化
img_edges = img.filter(ImageFilter.FIND_EDGES) # 边缘检测
4. ImageEnhance
模块(图像增强)
调整亮度、对比度、色彩饱和度等:
from PIL import ImageEnhance
enhancer = ImageEnhance.Brightness(img)
img_brighter = enhancer.enhance(1.5) # 亮度提升50%
enhancer = ImageEnhance.Contrast(img)
img_contrast = enhancer.enhance(2.0) # 对比度翻倍
5. 其他实用功能
-
图像信息获取:
print(img.format) # 格式(JPEG, PNG等)
print(img.size) # 尺寸(宽, 高)
print(img.mode) # 模式(RGB, L等)
- 多帧图像处理(GIF/WebP):
img.seek(frame_index) # 跳转到指定帧
三、典型应用场景
-
图像预处理:调整尺寸、裁剪、灰度化(用于机器学习)。
-
生成水印:叠加文字或 Logo。
-
批量处理:格式转换、重命名、滤镜应用。
-
数据可视化:绘制图表并合成到图像中。
四、安装与注意事项
-
安装 Pillow:
pip install Pillow
-
注意:
-
处理大图像时可能占用较多内存。
-
修改图像后需调用
save()
保存,否则不会自动写入文件。 -
不同图像格式支持的模式不同(如 JPEG 不支持透明通道)。
-
五、完整示例
from PIL import Image, ImageDraw, ImageFont
# 打开图像并调整大小
img = Image.open("input.jpg")
img = img.resize((800, 600))
# 绘制文字水印
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 36)
draw.text((10, 10), "Watermark", fill="yellow", font=font)
# 应用滤镜并保存
img = img.filter(ImageFilter.SHARPEN)
img.save("output.png", "PNG")
掌握 PIL/Pillow 后,可以轻松实现自动化图像处理任务! 🚀
祝大家学的愉快!!!