命令行(jpgboost-cli)
jpgboost-cli 无需打开图形界面即可压缩您的图片。它是脚本、定时任务与持续集成场景的理想工具。
您的许可证最多可覆盖 2 次供个人使用的安装。应用程序与 CLI 即使安装在同一台 Mac 上,也各自计为一次独立安装。它们会以设备形式显示在"设置 > 许可证"中。
一台仅运行 CLI、用于持续集成或定时任务等自身自动化用途的服务器,可以占用这两个名额中的一个,而无需额外购买许可证。更多信息请参阅在服务器上使用许可证与每位用户一份许可证部分。
命令行的用途
jpgboost-cli 是内置于 JPGBoost.app 中的独立可执行文件,既不依赖本地 API,也不依赖正在运行的应用程序实例:它直接使用相同的解码与编码引擎,因此生成的文件与图形界面完全一致。
在无需打开任何界面的场景中,它是理想的入口方式:Shell 脚本、定时任务、持续集成,或处理大量文件时均可使用。
jpgboost-cli 已包含在 JPGBoost.app 中。由于使用的是应用中已集成的组件,因此既不需要编译,也不需要安装任何库。
让命令可被随处调用
该二进制文件位于应用程序包内。您可以通过其完整路径直接调用:
/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help
为了能在任何文件夹中运行 jpgboost-cli,请创建一次符号链接:
sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
/usr/local/bin/jpgboost-cli
jpgboost-cli --help
由于该链接指向应用程序包,因此在应用更新后依然有效。本页中的示例均假设已完成此项设置;若未设置,请将 jpgboost-cli 替换为上述完整路径。
只要该目录包含在您的 PATH 中,您也可以使用个人文件夹替代 /usr/local/bin,例如 ~/bin。另一个简单的替代方案是在 ~/.zshrc 中添加一个别名。
在服务器上使用许可证
仅运行 CLI 的机器(例如没有图形界面的服务器),可以无需使用 JPGBoost.app 完成激活与管理。
# 通过 CLI 获取此机器的标识符
jpgboost-cli --machine-id
# 使用购买后通过电子邮件收到的令牌进行首次激活
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX
# 从这台已激活的服务器生成用于添加另一台设备的配对码
jpgboost-cli --add-device
# 使用在其他位置(应用程序或另一个 CLI)生成的配对码加入许可证
jpgboost-cli --pair XXXX-XXXX
# 如果服务器上有更新版本的许可证,则获取该版本
jpgboost-cli --sync
# 已使用的安装数量 / 上限,及其列表 — 本地读取,无需网络调用
jpgboost-cli --devices
应用程序与 CLI 即使在同一台 Mac 上使用,也会被视为两次独立安装。它们各自拥有独立的安装标识符,因此会占用 Pro 许可证所允许的两个名额中的一个。
因此,您可以以多种方式使用许可证,例如:您 Mac 上的应用程序配合服务器上的 CLI;同一台 Mac 上同时使用应用程序与 CLI;两台不同 Mac 上均使用应用程序;或者仅在从不打开应用程序的服务器上使用 CLI。
语法与选项
jpgboost-cli <文件...> --output <文件夹> [选项]
| 选项 | 功能 | 默认值 |
|---|---|---|
--output <文件夹> | 目标文件夹,若不存在则自动创建 | 必填 |
--quality <1-100> | 压缩画质 | 75 |
--format <格式> | png、jpeg、heic、avif、webp 或 jxl 之一 | jpeg |
--profile <名称> | 应用具名的导出配置文件 | 无 |
--jobs <N> | 并行处理的文件数量 | 核心数量 |
--json | 输出结构化 JSON,而非可读文本 | 关闭 |
--help | 显示帮助信息 | — |
基础示例
# 将两个文件转换为 WebP,画质设为 60
jpgboost-cli foto1.jpg foto2.png --quality 60 --format webp --output ./compressed
# foto1.jpg: 4.2 MB -> 890 KB (-79%) -> ./compressed/foto1.webp
# foto2.png: 1.8 MB -> 620 KB (-66%) -> ./compressed/foto2.webp
#
# 已处理 2 个文件,0 个失败。
# 将整个文件夹转换为 AVIF
jpgboost-cli ~/Pictures/export/*.png --format avif --quality 65 --output ~/Pictures/web
批量处理与并行化
对于数百甚至数千个文件,--jobs 选项可同时处理多张图片。每个文件都会被独立解码、编码,随后释放:内存占用不会随等待处理的文件数量增长,而只与 --jobs 的取值相关。
# 同时处理 8 个文件
jpgboost-cli ~/Photos/batch/*.jpg --jobs 8 --format webp --output ~/Photos/web
# 逐个处理,以降低共享设备上的负载
jpgboost-cli ~/Photos/batch/*.jpg --jobs 1 --format webp --output ~/Photos/web
在一批 12 个文件的测试中,--jobs 8 比 --jobs 1 快约 4 倍。实际提升幅度取决于您 Mac 的核心数量以及目标格式:AVIF 与 JPEG XL 的编码速度明显慢于 JPEG 或 HEIC。
使用导出配置文件
--profile 选项可重复使用在应用程序或通过 API 创建的配置文件,仅会补充您未明确指定的部分。
# 格式、画质与文件夹均来自配置文件
jpgboost-cli --profile "Web JPEG" *.png
# 此处显式指定的文件夹优先,其余部分来自配置文件
jpgboost-cli --profile "Web JPEG" --output ./de/livery *.png
CLI 还可以直接创建或更新配置文件,无需经过设置或本地 API:
jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./compressed
--format 与 --quality 为必填项,--output 为可选项(指定的文件夹必须已经存在)。若名称已被使用,则会替换现有的配置文件,而非创建重复项——这与应用程序的"配置文件"标签页及本地 API 的行为一致。与 CLI 的其他功能一样,此功能同样需要 JPGBoost Pro。
JSON 输出
使用 --json 时,输出结果为一个 JSON 数组,其中每个已处理的文件对应一个 JSON 对象,其结构与本地 API 的响应相同,便于与 jq 或其他工具进行串联。
jpgboost-cli *.png --format webp --output ./output --json
# 与 jq 串联:仅保留出现错误的文件
jpgboost-cli *.png --format webp --output ./output --json \
| jq '.[] | select(.error != null)'
可用字段:path、originalSizeBytes、compressedSizeBytes、ratio、destination 与 error。
退出代码
| 代码 | 含义 |
|---|---|
0 | 所有文件均处理成功 |
77 | 此设备上没有有效的 Pro 许可证 |
| 非零值 | 至少有一个文件处理失败;可直接用于脚本或持续集成流程 |
同名文件
两个基础名称相同的输入文件,自然会指向同一个输出结果。例如,将 a/foto.jpg 与 b/foto.png 转换为 WebP 时,二者都会生成 foto.webp。
JPGBoost 不会覆盖它们:第二个文件会获得一个独立的名称。
a/foto.jpg -> foto.webp
b/foto.png -> foto-2.webp
命名按参数的顺序分配,与使用 --jobs 时的执行顺序无关,因此结果具有可重现性。应用程序、快捷指令、AppleScript 与监控文件夹均遵循相同的规则。
此规则仅适用于不同文件之间发生的命名冲突。将同一个文件再次导出至同一文件夹,会直接替换其先前的输出结果,而不会累积生成 foto-2、foto-3 等文件。
验证安装
您可以随时验证该命令是否响应正常:
jpgboost-cli --help