一、Pillow 库简介
Pillow 是 Python 生态中 功能最全面的图像处理库,继承自经典的 Python Imaging Library(PIL),支持 30+ 种图像格式(如 JPEG、PNG、WebP、GIF)的读写与操作。其核心特性包括:
- 跨平台兼容:支持 Windows、macOS、Linux 系统。
- 高性能处理:底层基于 C 语言优化,处理 1000 张 5MP 图片仅需 23 秒。
- 生态集成:与 NumPy、TensorFlow 等库无缝协作,可直接转换图像为数组。
- 功能全覆盖:从基础裁剪调整到高级滤镜、颜色空间转换、OCR 支持,满足 90% 的图像处理需求。
二、安装与配置
bash
pip install Pillow # 安装命令[2,5,6](@ref)
验证安装:
python
from PIL import Image
print(Image.__version__) # 输出版本号(如 10.0.0+)[2,3](@ref)
三、核心功能与常用函数
1. 基础操作
-
打开/保存图像:
python
img = Image.open("input.jpg") # 支持本地文件或 URL[3,5](@ref) img.save("output.webp", quality=85) # 转换格式并优化质量[2,5](@ref)
-
调整尺寸:
python
resized = img.resize((800, 600)) # 直接调整(可能失真) img.thumbnail((300, 300)) # 保持宽高比的缩略图[3,6](@ref)
-
裁剪与旋转:
python
cropped = img.crop((100, 100, 500, 400)) # 坐标格式(左,上,右,下)[1,5](@ref) rotated = img.rotate(45, expand=True) # 旋转并自动扩展画布[3,6](@ref)
2. 图像增强
-
滤镜效果:
python
from PIL import ImageFilter blurred = img.filter(ImageFilter.GaussianBlur(radius=3)) # 高斯模糊[4,6](@ref) edges = img.filter(ImageFilter.FIND_EDGES) # 边缘检测[4](@ref)
-
颜色调整:
python
from PIL import ImageEnhance enhancer = ImageEnhance.Contrast(img) high_contrast = enhancer.enhance(2.0) # 对比度提升 100%[2,5](@ref)
-
颜色空间转换:
python
grayscale = img.convert("L") # 转为灰度图[6](@ref) hsv_img = img.convert("HSV") # HSV 色彩空间(用于色相调整)[3](@ref)
3. 高级功能
-
图像合成:
python
background = Image.new("RGB", (1080, 1920), "#FFFFFF") # 创建白色背景[2](@ref) product = Image.open("product.png").resize((800, 800)) background.paste(product, (140, 300), mask=product.split()[3]) # 透明蒙版合成[2](@ref)
-
文字与绘图:
python
from PIL import ImageDraw, ImageFont draw = ImageDraw.Draw(img) font = ImageFont.truetype("arial.ttf", 36) draw.text((50, 50), "Hello Pillow", fill="red", font=font) # 添加文字[5,6](@ref)
-
元数据操作:
python
exif = img.getexif() # 获取拍摄时间、GPS 等元信息[1,4](@ref) img.save("new.jpg", exif=exif) # 保留原始元数据[2](@ref)
四、应用场景
-
批量图像处理:
- 自动调整数千张产品图尺寸并添加水印。
- 替换证件照背景颜色(利用 Alpha 通道抠图)。
-
动态内容生成:
- 创建验证码图片(随机文字 + 干扰线)。
- 生成电商促销海报(合成产品图、文字与二维码)。
-
数据可视化与科研:
- 将 Matplotlib 图表导出为高分辨率图片。
- 预处理医学影像(调整对比度 + 格式转换)。
五、注意事项
-
性能优化:
- 使用
thumbnail()
替代resize()
避免失真。 - 批量处理时关闭图像预览(
img.close()
)释放内存。
- 使用
-
版本兼容性:
- Pillow ≥9.0.0 移除了部分旧 API(如
PIL.Image.ANTIALIAS
)。
- Pillow ≥9.0.0 移除了部分旧 API(如
-
格式限制:
- GIF 动图需用
ImageSequence
逐帧处理。 - WebP 格式保存需指定质量参数(默认可能不兼容)。
- GIF 动图需用
官方文档:https://pillow.readthedocs.io/en/stable/