Python中Pillow库的深度解析

一、Pillow 库简介

Pillow 是 Python 生态中 ​功能最全面的图像处理库,继承自经典的 Python Imaging Library(PIL),支持 30+ 种图像格式(如 JPEG、PNG、WebP、GIF)的读写与操作。其核心特性包括:

  1. 跨平台兼容:支持 Windows、macOS、Linux 系统。
  2. 高性能处理:底层基于 C 语言优化,处理 1000 张 5MP 图片仅需 23 秒。
  3. 生态集成:与 NumPy、TensorFlow 等库无缝协作,可直接转换图像为数组。
  4. 功能全覆盖:从基础裁剪调整到高级滤镜、颜色空间转换、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)

  • 四、应用场景
    1. 批量图像处理

    2. 自动调整数千张产品图尺寸并添加水印。
    3. 替换证件照背景颜色(利用 Alpha 通道抠图)。
    4. 动态内容生成

    5. 创建验证码图片(随机文字 + 干扰线)。
    6. 生成电商促销海报(合成产品图、文字与二维码)。
    7. 数据可视化与科研

    8. 将 Matplotlib 图表导出为高分辨率图片。
    9. 预处理医学影像(调整对比度 + 格式转换)。

    五、注意事项
    1. 性能优化

    2. 使用 thumbnail() 替代 resize() 避免失真。
    3. 批量处理时关闭图像预览(img.close())释放内存。
    4. 版本兼容性

    5. Pillow ≥9.0.0 移除了部分旧 API(如 PIL.Image.ANTIALIAS)。
    6. 格式限制

    7. GIF 动图需用 ImageSequence 逐帧处理。
    8. WebP 格式保存需指定质量参数(默认可能不兼容)。

    官方文档:https://pillow.readthedocs.io/en/stable/ 

    作者:wanglaqqqq

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中Pillow库的深度解析

    发表回复