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.

Funcionalidade Pro

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.

Nada a instalar

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.

Se não usar sudo

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 app e a CLI contam como duas instalações distintas

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çãoFunçãoValor padrão
--output <pasta>Pasta de destino, criada se não existirObrigatória
--quality <1-100>Qualidade de compressão75
--format <formato>png, jpeg, heic, avif, webp ou jxljpeg
--profile <nome>Aplica um perfil de exportação com nomeNenhum
--jobs <N>Arquivos processados em paraleloNúmero de núcleos
--jsonSaída JSON estruturada em vez de texto legívelDesativado
--helpMostra 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
Ganho medido

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ódigoSignificado
0Todos os arquivos foram processados com êxito
77Nenhuma licença Pro válida nesta máquina
Diferente de zeroPelo 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.

Repetir a mesma exportação

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