Pillow处理图片核心是Image对象,支持打开、查看尺寸/模式/格式及保存;缩放、裁剪、旋转返回新图,需注意坐标与比例;图像增强与滤镜通过ImageEnhance和ImageFilter实现。

用Pillow处理图片不难,关键在理解图像对象、模式和常用方法的配合逻辑。它不是功能最全的库,但足够轻量、稳定,适合日常缩放、裁剪、滤镜、文字叠加等需求。
打开、保存与基础属性查看
Pillow的核心是Image对象。用Image.open()加载图片后,就能读取尺寸、色彩模式、格式等信息:
- img.size 返回 (宽, 高) 元组,注意顺序是宽在前
- img.mode 表示颜色模式,常见如 'RGB'(三通道)、'L'(灰度)、'RGBA'(带透明通道)
- img.format 是原始文件格式,如 'JPEG' 或 'PNG',保存时可指定不同格式
- 保存用 img.save("output.png"),自动根据后缀推断格式;也可显式写 img.save("out.jpg", "JPEG", quality=95)
缩放、裁剪与旋转操作
这些属于几何变换,不改变像素内容本质,但要注意方法返回新图像,原图不变:
- img.resize((w, h)):严格按目标尺寸拉伸,可能变形;想保持比例可用 img.thumbnail((max_w, max_h))(就地修改,不返回新图)
- img.crop((left, top, right, bottom)):传入四元组坐标,注意右下角是开区间(不包含)
- img.rotate(angle, expand=True):逆时针旋转角度,expand=True 自动扩大画布避免裁切
图像增强与简单滤镜
通过ImageEnhance模块可调节亮度、对比度、饱和度等,而ImageFilter提供预设滤镜:
立即学习“Python免费学习笔记(深入)”;
- ImageEnhance.Brightness(img).enhance(1.3):值 >1 变亮,
- ImageEnhance.Contrast(img).enhance(0.8):降低对比度让画面更“平”
- img.filter(ImageFilter.BLUR) 或 ImageFilter.SHARPEN:即用即得,适合快速预览效果
- 转灰度统一用 img.convert("L"),比手动计算RGB权重更可靠
在图上添加文字与简单图形
需要借助ImageDraw和ImageFont,注意字体路径必须存在,中文需加载支持UTF-8的字体文件:
- draw = ImageDraw.Draw(img) 创建绘图上下文
- font = ImageFont.truetype("simhei.ttf", 24) 加载中文字体(Windows常见路径为 C:/Windows/Fonts/simhei.ttf)
- draw.text((x, y), "你好", fill=(255, 0, 0), font=font):fill 支持 RGB 或 RGBA 元组
- 画矩形:draw.rectangle([(x1,y1), (x2,y2)], outline="blue", width=2)










