日常图片压缩,很多人第一反应是找 GUI 软件:点几下鼠标,拖入图片,调整参数,等待完成。这类工具适合手动处理少量文件,但如果你需要批量压缩几百张图片、集成到构建流程里,或者在服务器上自动优化上传资源,GUI 就显得力不从心了。
命令行图片压缩工具正是为解决这类场景而生:它们没有图形界面,但速度极快、可脚本化、能批量处理,而且是许多 GUI 压缩软件背后的核心引擎。本文介绍两款经典工具:pngquant 和 jpegoptim,分别专注 PNG 和 JPEG 格式。
1. pngquant — PNG 有损压缩专家
- 简介: pngquant 是一款专注于 PNG 格式的命令行压缩工具,采用有损压缩算法,通常能将 PNG 体积减小 40-70%,同时保持较好的视觉质量。它基于 libimagequant 库,通过减少调色板颜色数量实现高压缩率,是许多 GUI 图片压缩软件背后的 PNG 压缩引擎。
- 官网: https://pngquant.org/
- GitHub: https://github.com/kornelski/pngquant
- 收费: 完全免费(开源,BSD-like license)
- 国内可用: ✅ 命令行工具,国内可直接运行
- 开箱即用: ✅ 安装后直接通过命令行使用
- 手机端: ❌ 仅桌面/服务器命令行
- 优点: 压缩率极高(40-70%)、速度极快、支持批量处理、可集成到脚本/CI/CD、保持透明通道(alpha channel)
- 缺点: 有损压缩,不适合对画质零容忍的场景;仅支持 PNG 格式
2. jpegoptim — JPEG 全能优化器
- 简介: jpegoptim 是一款专注于 JPEG 格式的命令行优化工具,同时支持无损和有损两种优化模式。无损模式下不降低画质,仅去除冗余元数据;有损模式下可调整质量因子,进一步减小文件体积。它可处理 EXIF、ICC 配置文件、注释等元数据,是服务器和开发者批量优化 JPEG 图片的首选工具。
- 官网: https://www.jpegoptim.org/
- GitHub: https://github.com/tjko/jpegoptim
- 收费: 完全免费(GPL-3.0)
- 国内可用: ✅ 命令行工具,国内可直接运行
- 开箱即用: ✅ 安装后直接通过命令行使用
- 手机端: ❌ 仅桌面/服务器命令行
- 优点: 同时支持无损和有损优化、保留 EXIF 可选、支持批量处理、可集成到自动化流程、压缩后画质损失极小
- 缺点: 仅支持 JPEG 格式;高级功能需要编译时开启额外选项
核心使用场景对比
| 场景 | pngquant | jpegoptim |
|---|---|---|
| PNG 有损压缩 | ✅ 主力场景 | ❌ 不支持 PNG |
| PNG 批量处理 | ✅ 支持 glob 和脚本 | ❌ 不支持 PNG |
| JPEG 无损优化 | ❌ 不支持 JPEG | ✅ 主力场景 |
| JPEG 有损压缩 | ❌ 不支持 JPEG | ✅ 支持质量调整 |
| 保留透明通道 | ✅ 支持 | N/A |
| 保留 EXIF | 默认移除 | ✅ 可选保留 |
| CI/CD 集成 | ✅ 易于集成 | ✅ 易于集成 |
| 服务器自动优化 | ✅ 适合 | ✅ 适合 |
典型命令行用法
pngquant:
# 单文件压缩
pngquant input.png --output output.png
# 批量压缩当前目录所有 PNG
pngquant *.png --ext .png --force
# 指定压缩质量范围(0-100)
pngquant --quality=60-80 input.png
jpegoptim:
# 无损优化(去除元数据,不降低画质)
jpegoptim --strip-all input.jpg
# 有损压缩(指定质量 60)
jpegoptim --max=60 input.jpg
# 批量优化当前目录所有 JPEG
jpegoptim --strip-all *.jpg
# 保留 EXIF 信息
jpegoptim --preserve *.jpg
综合对比表
| 工具 | 专注格式 | 压缩模式 | 典型压缩率 | 国内可用 | 开箱即用 | 上手难度 | 推荐度 |
|---|---|---|---|---|---|---|---|
| pngquant | PNG | 有损 | 40-70% | ✅ | ✅ | 简单 | ⭐⭐⭐⭐⭐ |
| jpegoptim | JPEG | 无损+有损 | 10-30% | ✅ | ✅ | 简单 | ⭐⭐⭐⭐⭐ |
🏆 推荐结论
🥇 首选方案
PNG 压缩 → pngquant 如果你需要压缩 PNG 图片(尤其是截图、UI 素材、带透明通道的图片),pngquant 是目前最成熟、压缩率最高的命令行工具。它也是 Caesium、ImageOptim 等 GUI 工具的 PNG 压缩引擎,足以证明其可靠性。
JPEG 压缩 → jpegoptim 如果你需要优化 JPEG 照片,jpegoptim 是首选。无损模式可安全用于已有素材库,有损模式适合 Web 图片压缩。服务器批量优化、静态资源构建流程中经常能看到它的身影。
🥈 万金油方案
GUI + 命令行组合 日常少量图片用 Caesium 等 GUI 工具手动处理,批量/自动化场景用 pngquant + jpegoptim 脚本处理。两者互补,覆盖 PNG 和 JPEG 全格式。
🥉 特定场景
网站构建优化 → 两者都用 前端项目图片资源构建时,可用脚本调用 pngquant 压缩 PNG,jpegoptim 压缩 JPEG,实现全格式自动化优化。
服务器自动压缩上传图片 → jpegoptim(照片) + pngquant(截图/素材) 上传接口触发压缩,或定时扫描媒体目录优化,两者都可集成到 shell 脚本或 CI/CD 流程中。
💡 终极建议
如果你经常处理图片,建议把 pngquant 和 jpegoptim 都装上,配合一个简单的 shell 脚本,就能实现 PNG/JPEG 全格式批量压缩。GUI 工具适合偶尔手动处理,命令行工具才是批量、自动化、服务器场景下的真正利器。
原文发布于 二翁集
关注公众号「爱维护」,获取更多实用工具推荐
系列文章: - Caesium:高压缩比与傻瓜式操作的图片压缩利器(GUI 工具推荐) - 6 款免费无损放大工具对比(Upscayl / Real-ESRGAN / Waifu2x 等) - ShareX:免费开源的截图录屏全能工具(截图 / 录屏 / OCR) - 本文(pngquant / jpegoptim 命令行压缩工具)