Командная строка (jpgboost-cli)
jpgboost-cli сжимает ваши изображения без открытия графического интерфейса. Это подходящий инструмент для скриптов, запланированных задач и непрерывной интеграции.
Ваша лицензия покрывает до двух установок, которыми вы пользуетесь лично. Приложение и CLI каждое считаются отдельной установкой, даже если оба установлены на одном Mac. Они отображаются как устройства в Настройки > Лицензия.
Сервер, на котором работает только CLI для ваших собственных автоматизаций, таких как непрерывная интеграция или запланированная задача, может таким образом занять одно из этих двух мест без необходимости в дополнительной лицензии. Подробнее см. в разделах Лицензия на сервере и Одна лицензия на пользователя.
Для чего нужна командная строка
jpgboost-cli — это автономный исполняемый файл, включённый в JPGBoost.app. Он не зависит ни от локального API, ни от запущенного экземпляра приложения: он напрямую использует тот же движок декодирования и кодирования и, следовательно, создаёт точно такие же файлы, как графический интерфейс.
Это подходящая точка входа всякий раз, когда не должен открываться никакой интерфейс: скрипт командной оболочки, запланированная задача, непрерывная интеграция, обработка большого количества файлов.
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 на полный путь выше.
Вы можете использовать личную папку вместо /usr/local/bin, например ~/bin, если она указана в вашем PATH. Простая альтернатива — добавить псевдоним в ваш ~/.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 на сервере, с приложением и CLI на одном Mac, с приложением на двух разных 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 ./сжато
# foto1.jpg: 4,2 МБ -> 890 КБ (-79%) -> ./сжато/foto1.webp
# foto2.png: 1,8 МБ -> 620 КБ (-66%) -> ./сжато/foto2.webp
#
# Обработано файлов: 2, ошибок: 0.
# Целая папка в AVIF
jpgboost-cli ~/Изображения/экспорт/*.png --format avif --quality 65 --output ~/Изображения/web
Пакетная обработка и параллелизм
Для сотен или тысяч файлов опция --jobs обрабатывает несколько изображений одновременно. Каждый файл декодируется, кодируется и затем освобождается независимо: потребление памяти растёт не с количеством ожидающих файлов, а только со значением --jobs.
# Восемь файлов обрабатываются одновременно
jpgboost-cli ~/Фото/группа/*.jpg --jobs 8 --format webp --output ~/Фото/web
# По одному, чтобы ограничить нагрузку на общей машине
jpgboost-cli ~/Фото/группа/*.jpg --jobs 1 --format webp --output ~/Фото/web
На группе из 12 файлов --jobs 8 оказался примерно в четыре раза быстрее, чем --jobs 1. Реальный прирост зависит от количества ядер вашего Mac и целевого формата: AVIF и JPEG XL заметно медленнее кодируются, чем JPEG или HEIC.
Использование профиля экспорта
Опция --profile повторно использует профиль, созданный в приложении или через API. Она дополняет только то, что вы не указали явно.
# Формат, качество и папка — всё из профиля
jpgboost-cli --profile "Web JPEG" *.png
# Явная папка имеет приоритет, остальное — из профиля
jpgboost-cli --profile "Web JPEG" --output ./доставка *.png
CLI также может напрямую создать или обновить профиль, минуя Настройки или локальный API:
jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./сжато
--format и --quality обязательны, --output опционален (указанная папка должна уже существовать). Уже используемое имя заменяет существующий профиль вместо создания дубликата — такое же поведение, как во вкладке Профили приложения и локальном API. Требует JPGBoost Pro, как и остальная часть CLI.
Вывод JSON
С опцией --json вывод представляет собой массив JSON, в котором каждый обработанный файл соответствует объекту JSON, той же формы, что и ответы локального API, что облегчает связывание с jq или другим инструментом.
jpgboost-cli *.png --format webp --output ./вывод --json
# Связать с jq: оставить только файлы с ошибкой
jpgboost-cli *.png --format webp --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