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. A aplicação e a CLI contam cada uma como uma instalação distinta, mesmo quando ambas estão instaladas no mesmo Mac. Aparecem como dispositivos em Definições > 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 da aplicação: usa diretamente o mesmo motor de descodificação e codificação, pelo que produz exatamente os mesmos ficheiros 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 ficheiros.
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 na aplicação.
Tornar o comando acessível
O binário encontra-se dentro do pacote da aplicação. 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 uma ligação simbólica uma única vez:
sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
/usr/local/bin/jpgboost-cli
jpgboost-cli --help
Como a ligação aponta para o pacote, mantém-se válida após uma atualização da aplicação. 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
A aplicação 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 a aplicação.
Sintaxe e opções
jpgboost-cli <ficheiro...> --output <pasta> [opções]
| Opção | Função | Valor predefinido |
|---|---|---|
--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> | Ficheiros 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 ficheiros 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 ficheiro(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 ficheiros, a opção --jobs processa várias imagens em simultâneo. Cada ficheiro é descodificado, codificado e depois libertado de forma independente: o consumo de memória não cresce com o número de ficheiros em espera, apenas com o valor de --jobs.
# Oito ficheiros 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 ficheiros, --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 na aplicação 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 Definições 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 ficheiro 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 ficheiros 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 ficheiros foram processados com êxito |
77 | Nenhuma licença Pro válida nesta máquina |
| Diferente de zero | Pelo menos um ficheiro falhou; utilizável diretamente num script ou em integração contínua |
Ficheiros com o mesmo nome
Dois ficheiros 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 na aplicação, nos Atalhos, no AppleScript e nas pastas monitorizadas.
Esta regra diz respeito apenas a colisões entre ficheiros diferentes. Voltar a exportar o mesmo ficheiro 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