Image Compression - 专业图片压缩工具
基于 Python Pillow,支持智能压缩、批量并行处理和多种专业级功能。
核心功能
| 功能 | 说明 |
|---|---|
| 自动模式 | 自动尝试多组质量参数,推荐最佳平衡点 |
| 目标大小 | 指定目标文件大小(KB),自动二分查找最优质量 |
| 批量并行 | 多线程并发处理目录,大幅提升批量速度 |
| 质量压缩 | JPEG/WebP 质量 1-100 精确控制 |
| 尺寸调整 | 百分比缩放 50% 或固定尺寸 800x600 |
| 格式转换 | JPEG/PNG/WebP/BMP/TIFF 互转 |
| 信息查看 | 显示图片尺寸、色彩模式、EXIF 信息 |
| 无损PNG | PNG 无损深度压缩 (compress_level=9) |
| JSON输出 | 便于程序化处理的 JSON 格式结果 |
使用方式
自动模式 (推荐)
python scripts/compress.py input.jpg --auto
自动测试 q90/q80/q70/q60/q50 五组参数,显示对比表格并推荐最佳选项。
指定目标文件大小
python scripts/compress.py input.jpg --target-size 200
自动二分查找能控制在 200KB 以内的最优质量。
基本压缩
python scripts/compress.py input.jpg output.jpg --quality 80
批量压缩目录 (并行处理)
python scripts/compress.py ./images/ ./compressed/ --quality 75 --batch --jobs 4
递归批量 + 格式转换
python scripts/compress.py ./images/ ./webp/ --format webp --quality 80 --batch --recursive
查看图片信息
python scripts/compress.py input.jpg --info
批量 JSON 输出 (程序化处理)
python scripts/compress.py ./images/ --quality 70 --batch --json > result.json
PNG 无损压缩
python scripts/compress.py input.png output.png --lossless
参数说明
| 参数 | 说明 |
|---|---|
input |
输入文件或目录 |
output |
输出文件或目录 (可选) |
--quality, -q |
压缩质量 1-100 (默认 85) |
--resize, -r |
缩放 50% 或固定尺寸 800x600 |
--batch, -b |
批量处理目录 |
--format, -f |
输出格式 jpeg/png/webp/bmp/tiff |
--lossless |
PNG 无损压缩模式 |
--target-size, -t |
目标文件大小 (KB),自动二分查找 |
--auto, -a |
自动模式:多组质量对比 + 推荐 |
--dry-run |
预览模式,只显示结果不保存 |
--keep-exif |
保留 EXIF 信息 |
--recursive |
递归处理子目录 |
--overwrite |
覆盖已有文件 |
--jobs, -j |
并行工作数 (默认 1,批量推荐 4) |
--json |
JSON 格式输出 |
--info |
显示图片详细信息 |
--no-progress |
隐藏进度输出 |
格式压缩建议
| 格式 | 推荐质量 | 说明 |
|---|---|---|
| JPEG | 70-85 | 80+ 对照片近乎无损,70 为良好平衡点 |
| WebP | 70-85 | 比 JPEG 小 25-35%,支持透明通道 |
| PNG | lossless | PNG 适合无损压缩,用 --lossless |
依赖安装
pip install pillow
安全与限制
- 默认不覆盖原文件 (需
--overwrite) --dry-run预览压缩效果,确认后再执行- 批量操作默认跳过已存在的文件
- 支持格式: JPEG, PNG, WebP, BMP, TIFF, GIF
- 并行
--jobs数建议不超过 CPU 核心数