Linha de comandos (jpgboost-cli)
jpgboost-cli comprime as suas imagens sem abrir a interface gráfica. É a ferramenta indicada para scripts, tarefas agendadas e integração contínua.
A sua licença cobre até duas instalações que use pessoalmente. O aplicativo e a CLI contam cada uma como uma instalação distinta, mesmo quando ambas estão instaladas no mesmo Mac. Aparecem como dispositivos em Ajustes > Licença.
Um servidor que executa apenas a CLI para as suas próprias automatizações, como uma integração contínua ou uma tarefa agendada, pode assim ocupar uma dessas duas instalações sem precisar de uma licença adicional. Para mais informações, consulte as secções Licença num servidor e Uma licença por utilizador.
Para que serve a linha de comandos
jpgboost-cli é um executável autónomo, incluído dentro do JPGBoost.app. Não depende nem da API local nem de uma instância em execução do aplicativo: usa diretamente o mesmo motor de descodificação e codificação, pelo que produz exatamente os mesmos arquivos que a interface gráfica.
É o ponto de entrada indicado sempre que nenhuma interface deva abrir: um script de shell, uma tarefa agendada, uma integração contínua, o processamento de um grande número de arquivos.
jpgboost-cli está incluído no JPGBoost.app. Não é necessária nenhuma compilação nem instalação de bibliotecas, pois usa os componentes já integrados no aplicativo.
Tornar o comando acessível
O binário encontra-se dentro do pacote do aplicativo. Pode invocá-lo diretamente pelo seu caminho completo:
/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help
Para poder executar o jpgboost-cli a partir de qualquer pasta, crie um link simbólico uma única vez:
sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
/usr/local/bin/jpgboost-cli
jpgboost-cli --help
Como o link aponta para o pacote, mantém-se válida após uma atualização do aplicativo. Os exemplos desta página pressupõem esta instalação; sem ela, substitua jpgboost-cli pelo caminho completo acima.
Pode usar uma pasta pessoal em vez de /usr/local/bin, por exemplo ~/bin, desde que conste do seu PATH. Uma alternativa simples é adicionar um alias ao seu ~/.zshrc.
Licença num servidor
Uma máquina que executa apenas a CLI, por exemplo um servidor sem interface gráfica, pode ser ativada e gerida sem usar o JPGBoost.app.
# Identificador desta máquina, a partir da CLI
jpgboost-cli --machine-id
# Primeira ativação, com o token recebido por email após a compra
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX
# A partir deste servidor já ativado, gerar um código para adicionar outro dispositivo
jpgboost-cli --add-device
# Juntar-se a uma licença através de um código gerado noutro local (app ou outra CLI)
jpgboost-cli --pair XXXX-XXXX
# Obter uma versão mais recente da licença, se o servidor tiver uma
jpgboost-cli --sync
# Número de instalações usadas / limite, e a sua lista — leitura local, sem chamada de rede
jpgboost-cli --devices
O aplicativo e a CLI são consideradas duas instalações distintas, mesmo quando usadas no mesmo Mac. Cada uma tem o seu próprio identificador de instalação e ocupa, por isso, uma das duas vagas permitidas por uma licença Pro.
Pode assim usar a sua licença de diferentes formas, por exemplo com a app no seu Mac e a CLI num servidor, com a app e a CLI no mesmo Mac, com a app em dois Mac diferentes, ou com a CLI sozinha num servidor que nunca abre o aplicativo.
Sintaxe e opções
jpgboost-cli <arquivo...> --output <pasta> [opções]
| Opção | Função | Valor padrão |
|---|---|---|
--output <pasta> | Pasta de destino, criada se não existir | Obrigatória |
--quality <1-100> | Qualidade de compressão | 75 |
--format <formato> | png, jpeg, heic, avif, webp ou jxl | jpeg |
--profile <nome> | Aplica um perfil de exportação com nome | Nenhum |
--jobs <N> | Arquivos processados em paralelo | Número de núcleos |
--json | Saída JSON estruturada em vez de texto legível | Desativado |
--help | Mostra a ajuda | — |
Primeiros exemplos
# Dois arquivos para WebP, qualidade 60
jpgboost-cli foto1.jpg foto2.png --quality 60 --format webp --output ./comprimidas
# foto1.jpg: 4,2 MB -> 890 KB (-79%) -> ./comprimidas/foto1.webp
# foto2.png: 1,8 MB -> 620 KB (-66%) -> ./comprimidas/foto2.webp
#
# 2 arquivo(s) processado(s), 0 falha(s).
# Uma pasta inteira para AVIF
jpgboost-cli ~/Imagens/exportar/*.png --format avif --quality 65 --output ~/Imagens/web
Processamento em lote e paralelismo
Para centenas ou milhares de arquivos, a opção --jobs processa várias imagens em simultâneo. Cada arquivo é descodificado, codificado e depois libertado de forma independente: o consumo de memória não cresce com o número de arquivos em espera, apenas com o valor de --jobs.
# Oito arquivos processados em simultâneo
jpgboost-cli ~/Fotos/lote/*.jpg --jobs 8 --format webp --output ~/Fotos/web
# Um de cada vez, para limitar a carga numa máquina partilhada
jpgboost-cli ~/Fotos/lote/*.jpg --jobs 1 --format webp --output ~/Fotos/web
Num lote de 12 arquivos, --jobs 8 revelou-se cerca de quatro vezes mais rápido do que --jobs 1. O ganho real depende do número de núcleos do seu Mac e do formato de destino: o AVIF e o JPEG XL são visivelmente mais lentos a codificar do que o JPEG ou o HEIC.
Usar um perfil de exportação
A opção --profile reutiliza um perfil criado no aplicativo ou via a API. Completa apenas o que não tenha especificado explicitamente.
# O formato, a qualidade e a pasta vêm todos do perfil
jpgboost-cli --profile "Web JPEG" *.png
# A pasta explícita prevalece, o resto vem do perfil
jpgboost-cli --profile "Web JPEG" --output ./entrega *.png
A CLI também pode criar ou atualizar um perfil diretamente, sem passar por Ajustes nem pela API local:
jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./comprimidas
--format e --quality são obrigatórios, --output é opcional (a pasta indicada tem de já existir). Um nome já usado substitui o perfil existente em vez de criar um duplicado — o mesmo comportamento do separador Perfis da app e da API local. Requer JPGBoost Pro, tal como o resto da CLI.
Saída JSON
Com --json, a saída é um array JSON no qual cada arquivo processado corresponde a um objeto JSON, com a mesma forma das respostas da API local, o que facilita o encadeamento com jq ou qualquer outra ferramenta.
jpgboost-cli *.png --format webp --output ./saida --json
# Encadear com jq: manter apenas os arquivos com erro
jpgboost-cli *.png --format webp --output ./saida --json \
| jq '.[] | select(.error != null)'
Campos disponíveis: path, originalSizeBytes, compressedSizeBytes, ratio, destination e error.
Códigos de saída
| Código | Significado |
|---|---|
0 | Todos os arquivos foram processados com êxito |
77 | Nenhuma licença Pro válida nesta máquina |
| Diferente de zero | Pelo menos um arquivo falhou; utilizável diretamente num script ou em integração contínua |
Arquivos com o mesmo nome
Dois arquivos de entrada com o mesmo nome base visam naturalmente a mesma saída. a/foto.jpg e b/foto.png convertidos para WebP produziriam ambos foto.webp.
O JPGBoost não os substitui: o segundo recebe um nome distinto.
a/foto.jpg -> foto.webp
b/foto.png -> foto-2.webp
Os nomes são atribuídos pela ordem dos argumentos, independentemente da ordem de execução com --jobs, pelo que o resultado é reprodutível. A mesma regra aplica-se no aplicativo, nos Atalhos, no AppleScript e nas pastas monitorizadas.
Esta regra diz respeito apenas a colisões entre arquivos diferentes. Voltar a exportar o mesmo arquivo para a mesma pasta substitui a sua saída anterior, sem acumular foto-2, foto-3, e assim sucessivamente.
Verificar a instalação
Verifique a qualquer momento que o comando responde corretamente:
jpgboost-cli --help