Pillow 简介
Pillow 是 Python 生态中处理图像的核心库,它是经典 PIL(Python Imaging Library)的现代分支。相比原版,Pillow 提供了更友好的安装体验和更好的兼容性。
借助它,你可以轻松完成以下任务:
- 打开、操作和保存多种格式(JPEG, PNG, GIF, BMP, TIFF 等)
- 基础变换:裁剪、旋转、调整尺寸
- 图像增强:亮度、对比度、锐度调节
- 滤镜效果:模糊、边缘检测
- 像素级操作与文本绘制
常见应用场景
在实际开发中,Pillow 的身影无处不在:
- Web 服务:动态生成缩略图、添加水印、生成验证码。
- 数据科学:机器学习前的图像预处理,如统一尺寸、数据增强。
- 桌面工具:构建简单的图片查看器或编辑器。
- 自动化脚本:批量转换格式、为文件添加统一标识。
- 视觉分析:提取特征,执行轻量级的计算机视觉任务。
环境准备
通过 pip 即可快速安装:
pip install pillow
如果网络较慢,可指定国内镜像源加速下载。
实战示例:创建图像并绘制文本
下面是一个完整的示例,演示如何创建一个空白图像,根据条件写入居中文字,并处理字体加载的异常情况。
这里有一个关键点需要注意:在较新版本的 Pillow 中,draw.textsize() 已被弃用,推荐使用 textbbox() 来计算文本边界,这样能避免兼容性问题。
from PIL import Image, ImageDraw, ImageFont
# 定义画布尺寸
width = 300
height = 150
# 设置颜色 (R, G, B)
background_color = (255, 255, 255) # 白色背景
text_color = (0, 0, 0) # 黑色文字
# 创建 RGB 模式图像
img = Image.new('RGB', (width, height), background_color)
draw = ImageDraw.Draw(img)
# 尝试加载系统字体,若失败则回退到默认字体
try:
# Windows 用户通常使用 arial.ttf
font_path = "arial.ttf"
# Linux 用户可能需要类似 /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
# macOS 用户可能需要 /System/Library/Fonts/Supplemental/Arial Bold.ttf
font = ImageFont.truetype(font_path, )
IOError:
()
font = ImageFont.load_default()
width > height:
message =
:
message =
bbox = draw.textbbox((, ), message, font=font)
text_width = bbox[] - bbox[]
text_height = bbox[] - bbox[]
x = (width - text_width) /
y = (height - text_height) /
draw.text((x, y), message, fill=text_color, font=font)
output_filename =
img.save(output_filename)
()

