RAW 格式图片通常占用大量存储空间,给归档和整理工作带来挑战。Compressor 通过利用并行处理技术来高效压缩大批量图片,在不明显影响图像质量的前提下大幅减少文件体积。
- 🚀 极速处理 - 并行压缩充分利用 CPU 多核性能
- 📦 批量处理 - 轻松处理数千张图片
- 🎯 智能输出 - 自动生成有序的文件夹结构
- 🔄 格式灵活 - 支持 JPG、PNG、WebP 格式转换
- 🛡️ 安全可靠 - 智能处理重名文件,具备错误恢复机制
- 🌍 跨平台 - 完美支持 Linux、macOS 和 Windows
| 功能 | 说明 |
|---|---|
| 🖥️ 命令行界面 | 简洁的命令行接口,便于自动化集成 |
| ⚡ 并行处理 | 可自定义线程数量,优化处理性能 |
| 🔍 递归扫描 | 自动处理所有子目录中的图片 |
| 📂 智能输出 | 自动生成有序的输出文件夹或使用自定义路径 |
| 🔄 重名处理 | 遇到文件冲突时智能重命名 |
| 🎨 质量控制 | 可调节压缩质量(0-100) |
| 📥 格式筛选 | 指定要处理的输入格式 |
| 📤 格式转换 | 转换为 JPG、PNG 或 WebP 格式 |
| 📊 详细日志 | 全面的操作日志和统计信息 |
| 🛡️ 异常处理 | 健壮的异常处理机制,确保处理不中断 |
| 🌐 跨平台 | 原生支持 Linux、macOS 和 Windows |
使用 Go 安装:
go install github.com/bipy/compressor@latest从源码编译:
git clone https://github.com/bipy/compressor.git
cd compressor
go build -o compressor# 使用 16 线程,质量设为 80 进行压缩
compressor -i ~/Pictures -j 16 -q 80
# 压缩单个文件
compressor -i ~/Pictures/photo.png
# 转换为 WebP 格式
compressor -i ~/Pictures -t webp -q 75
# 显示帮助信息
compressor -h输入文件夹:~/Pictures/my-photos
程序自动生成唯一 ID 并创建有序的输出结构:
📁 ~/Pictures/my-photos → 📁 ~/Pictures/my-photos-1700457797
📁 part1 → 📁 part1
🖼️ test.png → 🖼️ test.jpg
🖼️ haha.png → 🖼️ haha.jpg
自动处理所有子目录中的图片:
📁 输入 📁 输出
~/Pictures/my-photos/part1/test.png → ~/Pictures/my-photos-1700457797/part1/test.jpg
~/Pictures/my-photos/haha.png → ~/Pictures/my-photos-1700457797/haha.jpg
检测到重复文件名时,自动进行重命名:
~/Pictures/my-photos/haha.jpg → ~/Pictures/my-photos-1700457797/haha-1.jpg
~/Pictures/my-photos/haha.jpeg → ~/Pictures/my-photos-1700457797/haha-2.jpg
用法: compressor [-h] [选项]
选项:
-h 显示帮助信息
-i <路径> 输入路径(文件或目录)
-o <路径> 输出路径(可选,未指定时自动生成)
-j <数字> 并行处理的线程数量(默认: 8)
-q <0-100> 输出质量(默认: 90)
-t <格式> 输出格式: jpg/jpeg/png/webp(默认: jpg)
-accept <格式> 接受的输入格式(默认: "jpg jpeg png")
-width <像素> 最大图片宽度(默认: 原始尺寸)
-height <像素> 最大图片高度(默认: 原始尺寸)
# 使用最大线程数进行高质量压缩
compressor -i ~/Photos -j 32 -q 95
# 转换 PNG 为 WebP 并限制尺寸
compressor -i ~/Photos -t webp -width 1920 -height 1080
# 仅处理特定格式
compressor -i ~/Photos -accept "png jpg" -t jpg -q 85
# 指定自定义输出目录
compressor -i ~/Photos/raw -o ~/Photos/compressed -j 16- 扫描 - 递归发现输入路径中的所有图片
- 筛选 - 根据
-accept参数应用格式过滤 - 处理 - 使用工作线程并行压缩图片
- 转换 - 转换为目标格式(JPG/PNG/WebP)
- 保存 - 将压缩后的图片写入输出目录
- 报告 - 显示压缩统计信息和结果
欢迎贡献代码!请随时提交 Pull Request。对于重大更改,请先开启 issue 讨论您想要改变的内容。
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
基于以下优秀项目构建:
- disintegration/imaging - 图片处理
- go-webpbin - WebP 支持
- charmbracelet/log - 美观的日志输出