利用Python实现批量裁剪图片

七月
七月
发布时间:2026-10-11| 2人浏览过
原创

本文介绍如何使用Python与Pillow库实现单张及批量图片裁剪。涵盖环境准备、坐标定义规范、单图裁剪逻辑及带文件夹遍历的批量处理方案。通过自动计算边界并统一输出格式,快速完成图像预处理任务,显著降低人工操作成本。

目标与裁剪原理

图片裁剪的核心在于提取原始画面中的特定矩形区域。在计算机视觉与数据预处理场景中,通常需要先确定目标区域的左上角与右下角像素坐标,随后将该区域从原图中剥离并保存。Pillow 库通过 crop() 方法直接支持该操作,输入格式为包含四个整数的元组 (左, 上, 右, 下),数值单位为像素。

准备条件与环境配置

确保本地已安装 Python 3.7 及以上版本,并在终端或命令行中执行安装命令引入图像处理模块:

pip install Pillow

安装完成后,系统可调用 PIL.Image 模块进行后续的图像读取与裁剪流程。

第一步:打开图片并设定裁剪坐标

使用 Image.open() 加载源文件后,需明确裁剪范围。以截取左上角 100×100 像素为例,坐标元组应设置为 (0, 0, 100, 100)。若需适配不同比例的图片,可先读取图像的 .size 属性获取宽高,再动态计算边界值。

第二步:执行裁剪并保存至目标路径

调用 crop() 方法生成新图像对象,并通过 save() 写入磁盘。以下为完整的单图处理代码:

from PIL import Image

image_path = "source_image.jpg"
# 加载原始图像
image = Image.open(image_path)
# 定义裁剪区域:左, 上, 右, 下
rect = (0, 0, 100, 100)

crop_image = image.crop(rect)
crop_image.save("cropped_output.jpg")

执行后,当前目录下将生成仅包含指定矩形的 cropped_output.jpg 文件。

第三步:遍历目录实现批量处理

当面对大量素材时,需结合标准库 os 进行路径遍历。以下脚本将自动筛选常见图片后缀,提取每幅图的较小边作为正方形裁剪尺寸,并将结果归档至独立文件夹:

from PIL import Image
import os

def get_square_rect(image):
    width, height = image.size
    size = min(width, height)
    return (0, 0, size, size)

def batch_crop(root_dir, save_dir):
    # 确保输出目录存在
    os.makedirs(save_dir, exist_ok=True)
    for fname in os.listdir(root_dir):
        fpath = os.path.join(root_dir, fname)
        # 过滤非文件与非图片格式
        if not os.path.isfile(fpath) or not fname.lower().endswith((".jpg", ".png", ".webp")):
            continue
        try:
            with Image.open(fpath) as img:
                rect = get_square_rect(img)
                cropped = img.crop(rect)
                cropped.save(os.path.join(save_dir, fname))
        except Exception as err:
            print(f"处理失败 {fname}: {err}")

# 设置输入与输出路径
batch_crop("./raw_images", "./processed_images")

运行上述代码前,请确认 ./raw_images 文件夹内已放入待处理素材。脚本会忽略子目录,仅对顶层可见的有效图片执行裁剪并落盘。

完成状态核对与注意事项

任务完成后,可通过以下指标验证流程是否成功:
1. 检查 save_path 是否与原文件名一一对应生成新文件。
2. 使用任意图像查看器打开输出文件,核对裁剪边界是否符合预期位置。
3. 若遇到 FileNotFoundError 或权限拒绝,请核实文件夹路径拼写及读写权限。对于超大分辨率图像(如超过 5000px),建议分批次运行以避免内存溢出。

简要总结

以上是通过 Python 与 Pillow 库完成单张及批量图片裁剪的详细内容,更多关于 Python 图像处理与自动化脚本的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。