Python模块之Pillow详细功能介绍及示例

Python 的 Pillow 库(原名为 PIL,现为 Pillow)是一个强大的图像处理库,支持多种图像格式的读写、编辑和增强。以下是 Pillow 中常用模块和方法的详细说明及实际场景示例:


1. Image 模块:核心图像操作

Image 模块是 Pillow 的核心,提供图像的打开、保存、基础操作(裁剪、旋转、缩放等)。

常用方法及示例
  1. open() - 打开图像文件

    from PIL import Image
    img = Image.open("input.jpg")  # 打开图像
    
  2. save() - 保存图像

    img.save("output.png")  # 保存为 PNG 格式
    
  3. resize() - 调整图像大小
    场景:生成缩略图

    thumbnail_size = (100, 100)
    resized_img = img.resize(thumbnail_size)
    resized_img.save("thumbnail.jpg")
    
  4. crop() - 裁剪图像
    场景:截取图片中的某一部分

    # 参数:(left, upper, right, lower)
    box = (50, 50, 200, 200)
    cropped_img = img.crop(box)
    cropped_img.save("cropped.jpg")
    
  5. rotate() - 旋转图像
    场景:矫正图片方向

    rotated_img = img.rotate(45)  # 旋转45度
    rotated_img.save("rotated.jpg")
    
  6. convert() - 转换图像模式
    场景:将图片转为灰度图

    gray_img = img.convert("L")  # L 表示灰度模式
    gray_img.save("gray.jpg")
    

2. ImageDraw 模块:图像绘制

ImageDraw 用于在图像上绘制形状、文字。

常用方法及示例
  1. rectangle() - 绘制矩形
    场景:在图片上标记区域

    from PIL import Image, ImageDraw
    draw = ImageDraw.Draw(img)
    draw.rectangle([(10, 10), (100, 100)], outline="red", width=2)
    img.save("marked.jpg")
    
  2. text() - 添加文字
    场景:添加水印

    from PIL import ImageFont
    font = ImageFont.truetype("arial.ttf", 20)  # 加载字体
    draw.text((10, 10), "Watermark", fill="white", font=font)
    img.save("watermarked.jpg")
    

3. ImageFilter 模块:图像滤镜

ImageFilter 提供多种滤镜效果。

常用方法及示例
  1. GaussianBlur - 高斯模糊
    场景:模糊敏感信息

    from PIL import ImageFilter
    blurred_img = img.filter(ImageFilter.GaussianBlur(radius=5))
    blurred_img.save("blurred.jpg")
    
  2. FIND_EDGES - 边缘检测
    场景:提取图像轮廓

    edges_img = img.filter(ImageFilter.FIND_EDGES)
    edges_img.save("edges.jpg")
    

4. ImageEnhance 模块:图像增强

ImageEnhance 提供调整亮度、对比度、色彩饱和度等功能。

常用方法及示例
  1. Brightness - 调整亮度
    场景:修复过暗的图片

    from PIL import ImageEnhance
    enhancer = ImageEnhance.Brightness(img)
    bright_img = enhancer.enhance(1.5)  # 1.5 倍亮度
    bright_img.save("bright.jpg")
    
  2. Contrast - 调整对比度
    场景:增强图像细节

    enhancer = ImageEnhance.Contrast(img)
    contrast_img = enhancer.enhance(2.0)  # 2 倍对比度
    contrast_img.save("contrast.jpg")
    

5. ImageColor 模块:颜色处理

ImageColor 用于颜色值转换。

示例
from PIL import ImageColor
color_rgb = ImageColor.getrgb("#FF0000")  # 将 HEX 转为 RGB 元组 (255, 0, 0)

6. 实际场景综合示例

场景:将多张图片拼接为一张长图

def concat_images_vertically(image_paths, output_path):
    images = [Image.open(path) for path in image_paths]
    widths, heights = zip(*(i.size for i in images))
    total_height = sum(heights)
    max_width = max(widths)

    new_img = Image.new("RGB", (max_width, total_height))
    y_offset = 0
    for img in images:
        new_img.paste(img, (0, y_offset))
        y_offset += img.height
    new_img.save(output_path)

concat_images_vertically(["1.jpg", "2.jpg"], "combined.jpg")

总结

Pillow 的功能覆盖图像处理的绝大多数需求,包括:

  • 基础操作:打开、保存、裁剪、旋转、缩放。
  • 图像增强:亮度、对比度、滤镜。
  • 绘图功能:添加形状、文字、水印。
  • 格式转换:支持 JPEG、PNG、GIF、BMP 等格式。

通过组合这些方法,可以实现自动化图片处理、生成报告图表、批量添加水印等复杂任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值