现在位置: 首页 > Pillow 教程 > 正文

Pillow 常用模块与方法

Pillow 提供了丰富的功能,包括图像打开、编辑、保存、格式转换等。

本文将介绍 Pillow 的常用模块及方法,并提供简单的代码示例。


常用模块

模块名称功能类别核心功能常用方法/属性典型应用场景
Image核心模块基础图像操作open(), save(), resize(), crop(), rotate(), convert()图像加载/保存/尺寸调整/格式转换
ImageDraw绘图模块矢量图形绘制Draw(), line(), rectangle(), text(), ellipse()添加水印/绘制图形/标注图像
ImageFont字体支持文字渲染truetype(), load_default(), getsize()自定义文字样式/计算文字区域
ImageFilter图像特效滤镜处理BLUR, SHARPEN, EMBOSS, GaussianBlur()图片模糊/锐化/艺术效果
ImageEnhance图像优化质量增强Brightness(), Contrast(), Color(), Sharpness()亮度/对比度/饱和度调整
ImageOps高级操作自动化处理grayscale(), flip(), mirror(), invert()图像反相/镜像/强制灰度化
ImageChops通道运算数学运算add(), subtract(), multiply(), difference()图像合成/差异检测/蒙版处理
ImageColor颜色系统颜色转换getrgb(), getcolor(), colormapHEX/RGB/HSL颜色转换
ImageGrab屏幕捕获截图功能grab(), grabclipboard()屏幕截图/剪贴板图像获取
ImageStat数据分析像素统计Stat(), extrema(), mean(), rms()图像色彩分析/亮度检测
ImagePalette调色板索引色管理new(), getcolor(), tobytes()8位色图像处理/GIF优化
ImagePath路径处理矢量路径Path(), getbbox(), compact()复杂形状绘制(需配合ImageDraw)
ImageSequence动态图像帧处理Iterator(), all_frames()GIF动画分解/多帧TIFF处理
ImageMorph形态学图像变形MorphOp(), apply(), get_on_pixels()图案膨胀/腐蚀/结构分析
ImageShow图像预览快速显示show(), register_viewer()调试时快速查看图像
ImageTkGUI集成Tkinter支持PhotoImage(), BitmapImage()在Tkinter界面显示图像
ImageQtGUI集成Qt支持ImageQt(), toqimage()PyQt/PySide图像显示
ExifTags元数据EXIF读取TAGS, GPSTAGS读取相机参数/GPS信息
PSDraw打印输出PostScriptPSDraw(), begin_document()生成打印用矢量文件
TiffTags元数据TIFF标签TIFFTAGS处理TIFF格式元数据

模块工作过程

高级处理组合:

  • 特效制作:ImageFilter + ImageEnhance
  • 图像分析:ImageStat + ImageChops
  • GUI开发:ImageTk/ImageQt + ImageDraw

专业领域支持:

  • 科学图像:TIFFTags + ImageSequence
  • 打印出版:PSDraw + ImageColor
  • 计算机视觉:ImageMorph + ImageOps

常用方法

PIL.Image 模块常用方法

方法 描述 示例
Image.open() 打开图像文件 img = Image.open("example.jpg")
Image.save() 保存图像文件 img.save("output.png")
Image.show() 显示图像 img.show()
Image.resize() 调整图像尺寸 new_img = img.resize((200, 200))
Image.rotate() 旋转图像 rotated_img = img.rotate(45)
Image.crop() 裁剪图像 cropped_img = img.crop((50, 50, 200, 200))

示例代码:

实例

from PIL import Image

# 打开图像
img = Image.open("example.jpg")

# 调整大小并保存
resized_img = img.resize((300, 300))
resized_img.save("resized_example.jpg")

# 旋转 90 度并显示
rotated_img = img.rotate(90)
rotated_img.show()

PIL.ImageDraw 模块常用方法

方法 描述 示例
ImageDraw.Draw() 创建绘图对象 draw = ImageDraw.Draw(img)
draw.line() 绘制线条 draw.line([(0, 0), (100, 100)], fill="red", width=2)
draw.rectangle() 绘制矩形 draw.rectangle([(50, 50), (150, 150)], outline="blue", width=3)
draw.text() 绘制文本 draw.text((10, 10), "Hello", fill="black")

示例代码:

实例

from PIL import Image, ImageDraw

# 创建一个空白图像
img = Image.new("RGB", (300, 300), "white")
draw = ImageDraw.Draw(img)

# 绘制红色线条
draw.line([(0, 0), (300, 300)], fill="red", width=2)

# 绘制蓝色矩形
draw.rectangle([(50, 50), (250, 250)], outline="blue", width=3)

# 添加文本
draw.text((100, 100), "Hello Pillow!", fill="black")

# 保存图像
img.save("draw_example.png")
img.show()

PIL.ImageFilter 模块常用方法

方法 描述 示例
ImageFilter.BLUR 模糊滤镜 img.filter(ImageFilter.BLUR)
ImageFilter.CONTOUR 轮廓滤镜 img.filter(ImageFilter.CONTOUR)
ImageFilter.SHARPEN 锐化滤镜 img.filter(ImageFilter.SHARPEN)

示例代码:

实例

from PIL import Image, ImageFilter

# 打开图像
img = Image.open("example.jpg")

# 应用模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save("blurred_example.jpg")

# 应用锐化滤镜
sharpened_img = img.filter(ImageFilter.SHARPEN)
sharpened_img.show()