Pillow 常用模块与方法

Pillow 常用模块与方法 全景速查表

一篇掌握 90% 日常使用场景 的 Pillow 核心 API


1. 核心模块一览

模块功能常用类/函数
PIL.Image图像打开、保存、转换open(), Image
PIL.ImageDraw绘图(线、形、文字)ImageDraw.Draw()
PIL.ImageFont加载字体(支持中文)truetype(), load_default()
PIL.ImageFilter滤镜(模糊、锐化等)BLUR, SHARPEN, FIND_EDGES
PIL.ImageEnhance增强(亮度、对比度)Contrast, Brightness
PIL.ImageOps快速操作(翻转、灰度)flip(), grayscale()
PIL.ImageChops通道运算(叠加、差分)add(), subtract()
PIL.ImageTktkinter 集成PhotoImage

2. Image 模块 核心方法

方法说明示例
Image.open(path)打开图像img = Image.open("a.jpg")
img.save(path, quality=95)保存img.save("b.png")
img.convert("L")转灰度gray = img.convert("L")
img.resize((w,h))缩放img.resize((800,600))
img.thumbnail((w,h))等比缩放(推荐)img.thumbnail((400,400))
img.crop((l,t,r,b))裁剪img.crop((100,100,500,400))
img.rotate(90, expand=True)旋转img.rotate(45)
img.transpose(FLIP_LEFT_RIGHT)翻转img.transpose(Image.FLIP_TOP_BOTTOM)
img.show()显示(调试用)img.show()

3. ImageDraw 绘图方法

from PIL import ImageDraw
draw = ImageDraw.Draw(img)
方法说明示例
draw.text((x,y), "文字", font=font, fill=color)写文字draw.text((50,50), "Hello", fill="red")
draw.rectangle([x1,y1,x2,y2], fill=, outline=)画矩形draw.rectangle([100,100,300,200], outline="blue", width=3)
draw.line([x1,y1,x2,y2], fill=, width=)画线draw.line([0,0,200,200], fill="green", width=5)
draw.ellipse([x1,y1,x2,y2], fill=, outline=)画圆/椭圆draw.ellipse([50,50,150,150], fill="yellow")
draw.polygon([(x1,y1),...], fill=)画多边形draw.polygon([(100,100),(200,50),(300,100)], fill="purple")

4. ImageFont 字体加载

from PIL import ImageFont
方法说明
ImageFont.truetype("simhei.ttf", 36)加载 TTF 字体(支持中文)
ImageFont.load_default()默认字体(不支持中文)

中文必用truetype("simhei.ttf", size)


5. ImageFilter 滤镜

from PIL import ImageFilter
滤镜效果
ImageFilter.BLUR模糊
ImageFilter.GaussianBlur(radius=5)高斯模糊
ImageFilter.SHARPEN锐化
ImageFilter.EDGE_ENHANCE边缘增强
ImageFilter.FIND_EDGES边缘检测
ImageFilter.EMBOSS浮雕
blurred = img.filter(ImageFilter.GaussianBlur(10))

6. ImageEnhance 图像增强

from PIL import ImageEnhance
增强器说明示例
ImageEnhance.Brightness(img)亮度.enhance(1.5)
ImageEnhance.Contrast(img)对比度.enhance(2.0)
ImageEnhance.Color(img)饱和度.enhance(0.0) → 灰度
ImageEnhance.Sharpness(img)锐度.enhance(3.0)
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(1.8)  # 提高对比度

7. ImageOps 快速操作

from PIL import ImageOps
方法说明
ImageOps.grayscale(img)转灰度
ImageOps.invert(img)反色
ImageOps.flip(img)上下翻转
ImageOps.mirror(img)左右翻转
ImageOps.equalize(img)直方图均衡化
gray = ImageOps.grayscale(img)

8. ImageChops 通道运算

from PIL import ImageChops
方法说明
ImageChops.add(img1, img2)像素相加
ImageChops.subtract(img1, img2)相减
ImageChops.difference(img1, img2)差异图
ImageChops.screen(img1, img2)滤色混合
diff = ImageChops.difference(img1, img2)

9. 图像模式(Mode)速查

模式说明
"L"灰度(8位)
"RGB"真彩色
"RGBA"带透明通道
"1"二值(黑白)
"P"调色板(256色)
"CMYK"印刷四色
img.mode  # 查看
img = img.convert("RGBA")  # 转换

10. 常用常量

from PIL import Image

Image.FLIP_LEFT_RIGHT
Image.FLIP_TOP_BOTTOM
Image.ROTATE_90
Image.ROTATE_180
Image.ROTATE_270
Image.LANCZOS  # 高质量缩放滤波器

实战代码模板(复制即用)

from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageEnhance

# 1. 打开
img = Image.open("input.jpg").convert("RGB")

# 2. 缩放 + 高质量
img = img.resize((800, 600), Image.LANCZOS)

# 3. 增强对比度
img = ImageEnhance.Contrast(img).enhance(1.5)

# 4. 添加文字(中文)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("simhei.ttf", 48)
draw.text((50, 50), "Pillow 牛逼!", font=font, fill=(255, 0, 0))

# 5. 添加滤镜
img = img.filter(ImageFilter.SHARPEN)

# 6. 保存
img.save("output.jpg", quality=95)

推荐字体路径(中文)

系统路径
WindowsC:/Windows/Fonts/simhei.ttf
macOS/System/Library/Fonts/PingFang.ttc
Linux/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc

官方文档速联


一张图记住 80% 用法

Image.open() 
→ .convert() → .resize() → .crop() → .rotate()
→ ImageDraw.Draw() → .text() / .rectangle()
→ .filter() → .save()

总结

Pillow = 图像处理瑞士军刀
掌握 Image, ImageDraw, ImageFont, ImageFilter无敌!


需要我为你生成 PDF 速查卡交互式 Jupyter Notebook 吗?
欢迎继续提问!

类似文章

一条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注