命令行(jpgboost-cli)

jpgboost-cli 无需打开图形界面即可压缩您的图片。它是脚本、定时任务与持续集成场景的理想工具。

Pro 功能

您的许可证最多可覆盖 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 替换为上述完整路径。

如果您不使用 sudo

只要该目录包含在您的 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 计为两次独立安装

应用程序与 CLI 即使在同一台 Mac 上使用,也会被视为两次独立安装。它们各自拥有独立的安装标识符,因此会占用 Pro 许可证所允许的两个名额中的一个。

因此,您可以以多种方式使用许可证,例如:您 Mac 上的应用程序配合服务器上的 CLI;同一台 Mac 上同时使用应用程序与 CLI;两台不同 Mac 上均使用应用程序;或者仅在从不打开应用程序的服务器上使用 CLI。

语法与选项

jpgboost-cli <文件...> --output <文件夹> [选项]
选项功能默认值
--output <文件夹>目标文件夹,若不存在则自动创建必填
--quality <1-100>压缩画质75
--format <格式>pngjpegheicavifwebpjxl 之一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)'

可用字段:pathoriginalSizeBytescompressedSizeBytesratiodestinationerror

退出代码

代码含义
0所有文件均处理成功
77此设备上没有有效的 Pro 许可证
非零值至少有一个文件处理失败;可直接用于脚本或持续集成流程

同名文件

两个基础名称相同的输入文件,自然会指向同一个输出结果。例如,将 a/foto.jpgb/foto.png 转换为 WebP 时,二者都会生成 foto.webp

JPGBoost 不会覆盖它们:第二个文件会获得一个独立的名称

a/foto.jpg  ->  foto.webp
b/foto.png  ->  foto-2.webp

命名按参数的顺序分配,与使用 --jobs 时的执行顺序无关,因此结果具有可重现性。应用程序、快捷指令、AppleScript 与监控文件夹均遵循相同的规则。

重复执行同一次导出

此规则仅适用于不同文件之间发生的命名冲突。将同一个文件再次导出至同一文件夹,会直接替换其先前的输出结果,而不会累积生成 foto-2foto-3 等文件。

验证安装

您可以随时验证该命令是否响应正常:

jpgboost-cli --help