一个基于 Pillow 的 Python 小工具,用于批量压缩和调整图片尺寸,并统一转换为 JPG 格式。
- 等比例缩放图片(不变形)
- 统一输出为 JPG 格式
- 自动处理透明通道(RGBA / LA / P 模式),用白色背景合成
- 使用高质量的 LANCZOS 重采样算法
- 保留原文件名(仅后缀改为
.jpg) - 显示每张图片的尺寸与文件大小变化
pip install Pillow脚本运行时会读写脚本所在目录下的两个子文件夹:
ResizeImage/
├── resize.py # 主脚本
├── docs/
│ └── instruction.md # 本说明文档
├── original/ # 【输入】把要处理的图片放这里
└── resized/ # 【输出】处理后的图片自动生成在这里
original/需要手动创建,并把原始图片放入其中resized/脚本会自动创建(若不存在)
- 在
ResizeImage/下创建original/文件夹,放入待处理的图片 - 运行脚本:
python resize.py- 处理完成后,在
resized/文件夹中查看输出结果
.jpg / .jpeg / .png / .gif / .bmp / .webp / .tiff
输出统一为 .jpg。
参数位于 resize.py:16 的 resize_image() 函数签名中:
| 参数 | 默认值 | 说明 |
|---|---|---|
max_dimension |
1000 |
最大宽度或高度(单位:像素)。宽高中较大的一边会被缩放到此值,另一边按比例缩放;若原图两边都已小于等于该值,则保持原尺寸 |
quality |
95 |
JPG 保存质量,取值范围 1–95(Pillow 推荐上限 95)。数值越高越清晰、文件越大 |
目前 process_images() 调用 resize_image() 时没有显式传参,使用的是函数默认值。要修改,有两种方式:
方式一:修改默认值(最简单)
编辑 resize.py:16,直接改函数签名的默认值:
def resize_image(input_path, output_path, max_dimension=1500, quality=90):方式二:在调用处显式传参
编辑 resize.py:124,把调用改为:
if resize_image(img_path, output_path, max_dimension=1500, quality=90):- 遍历
original/中所有受支持扩展名的文件 - 对每张图片:
- 若为带透明通道的模式(RGBA/LA/P),先合成到白色背景上
- 若宽或高超过
max_dimension,按比例缩放到不超过该值 - 若宽高都已不超过
max_dimension,保持原尺寸 - 以
quality指定的质量保存为 JPG,并开启optimize=True
- 输出文件名:
原文件名.jpg(相同 stem,不同后缀)
- 同名覆盖:如果
resized/已有同名.jpg文件,会被直接覆盖 - 不是无损:JPG 是有损压缩,即使
quality=95也会有轻微画质损失;如需无损请勿使用此工具 - 透明度会丢失:PNG 的透明背景会被替换为白色
- 只处理一层:不递归进入
original/的子文件夹