Ligne de commande (jpgboost-cli)

jpgboost-cli compresse vos images sans lancer l'interface graphique. C'est l'outil à privilégier pour les scripts, les tâches planifiées et les chaînes d'intégration continue.

Fonction Pro

Votre licence couvre jusqu'à deux installations que vous utilisez personnellement. L'application et la CLI comptent chacune comme une installation distincte, même lorsqu'elles sont installées sur le même Mac. Elles apparaissent comme des appareils dans Réglages > Licence.

Un serveur qui exécute uniquement la CLI pour vos propres automatisations, comme une intégration continue ou une tâche planifiée, peut donc occuper l'une de ces deux installations sans nécessiter de licence supplémentaire. Pour plus d'informations, consultez les sections Licence sur un serveur et Une licence par utilisateur.

À quoi sert la ligne de commande

jpgboost-cli est un exécutable autonome, livré dans JPGBoost.app. Il ne dépend ni de l'API locale, ni d'une instance de l'application en cours d'exécution : il utilise directement le même moteur de décodage et d'encodage, et produit donc exactement les mêmes fichiers que l'interface graphique.

C'est le point d'entrée à privilégier lorsque aucune interface ne doit s'ouvrir : script shell, tâche planifiée, chaîne d'intégration continue, traitement sur un grand nombre de fichiers.

Rien à installer

jpgboost-cli est inclus dans JPGBoost.app. Aucune compilation ni installation de bibliothèque n'est nécessaire, car il utilise les composants déjà intégrés à l'application.

Rendre la commande accessible

Le binaire se trouve dans le bundle de l'application. Vous pouvez l'appeler directement par son chemin complet :

/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help

Pour pouvoir exécuter jpgboost-cli depuis n'importe quel dossier, créez un lien symbolique une seule fois :

sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
  /usr/local/bin/jpgboost-cli

jpgboost-cli --help

Le lien pointant vers le bundle, il reste valide après une mise à jour de l'application. Les exemples de cette page supposent cette installation ; sans elle, remplacez jpgboost-cli par le chemin complet ci-dessus.

Si vous n'utilisez pas sudo

Vous pouvez viser un dossier personnel plutôt que /usr/local/bin, par exemple ~/bin, à condition qu'il figure dans votre PATH. Une simple alternative consiste à ajouter un alias à votre ~/.zshrc.

Licence sur un serveur

Une machine qui exécute uniquement la CLI, par exemple un serveur sans interface graphique, peut être activée et administrée sans utiliser JPGBoost.app.

# Identifiant de cette machine, côté CLI
jpgboost-cli --machine-id

# Première activation, avec le jeton reçu par e-mail après achat
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX

# Depuis ce serveur déjà activé, générer un code pour ajouter un autre appareil
jpgboost-cli --add-device

# Rejoindre une licence via un code généré ailleurs (app ou autre CLI)
jpgboost-cli --pair XXXX-XXXX

# Récupérer une version plus récente de la licence si le serveur en a une
jpgboost-cli --sync

# Nombre d'installations utilisées / limite, et leur liste — lecture locale, sans appel réseau
jpgboost-cli --devices
L'app et la CLI comptent comme deux installations distinctes

L'application et la CLI sont considérées comme deux installations distinctes, même lorsqu'elles sont utilisées sur le même Mac. Chacune possède son propre identifiant d'installation et occupe donc une place sur les deux autorisées par une licence Pro.

Vous pouvez ainsi utiliser votre licence de différentes façons, par exemple avec l'application sur votre Mac et la CLI sur un serveur, avec l'application et la CLI sur le même Mac, avec l'application sur deux Mac différents, ou encore avec la CLI seule sur un serveur n'exécutant jamais l'application.

Syntaxe et options

jpgboost-cli <fichier...> --output <dossier> [options]
OptionRôleValeur par défaut
--output <dossier>Dossier de destination, créé s'il n'existe pasObligatoire
--quality <1-100>Qualité de compression75
--format <format>png, jpeg, heic, avif, webp ou jxljpeg
--profile <nom>Applique un profil d'export nomméAucun
--jobs <N>Fichiers traités en parallèleNombre de cœurs
--jsonSortie JSON structurée au lieu du texte lisibleDésactivé
--helpAffiche l'aide

Premiers exemples

# Deux fichiers vers WebP, qualité 60
jpgboost-cli photo1.jpg photo2.png --quality 60 --format webp --output ./compresse
# photo1.jpg : 4,2 Mo -> 890 Ko (-79%) -> ./compresse/photo1.webp
# photo2.png : 1,8 Mo -> 620 Ko (-66%) -> ./compresse/photo2.webp
#
# 2 fichier(s) traite(s), 0 echec(s).

# Tout un dossier vers AVIF
jpgboost-cli ~/Images/export/*.png --format avif --quality 65 --output ~/Images/web

Traitement par lot et parallélisme

Pour des centaines ou des milliers de fichiers, l'option --jobs traite plusieurs images à la fois. Chaque fichier est décodé, encodé puis libéré indépendamment : l'empreinte mémoire ne croît donc pas avec le nombre de fichiers en attente, mais uniquement avec la valeur de --jobs.

# Huit fichiers traités simultanément
jpgboost-cli ~/Photos/lot/*.jpg --jobs 8 --format webp --output ~/Photos/web

# Un seul à la fois, pour limiter la charge sur une machine partagée
jpgboost-cli ~/Photos/lot/*.jpg --jobs 1 --format webp --output ~/Photos/web
Gain mesuré

Sur un lot de 12 fichiers, --jobs 8 s'est révélé environ quatre fois plus rapide que --jobs 1. Le gain réel dépend du nombre de cœurs de votre Mac et du format visé : AVIF et JPEG XL sont nettement plus lents à encoder que JPEG ou HEIC.

Utiliser un profil d'export

L'option --profile reprend un profil créé dans l'application ou via l'API. Elle ne comble que ce que vous n'avez pas précisé explicitement.

# Format, qualité et dossier viennent tous du profil
jpgboost-cli --profile "Web JPEG" *.png

# Le dossier explicite l'emporte, le reste vient du profil
jpgboost-cli --profile "Web JPEG" --output ./livraison *.png

La CLI peut aussi créer ou mettre à jour un profil directement, sans passer par Réglages ni l'API locale :

jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./compresse

--format et --quality sont obligatoires, --output optionnel (le dossier indiqué doit déjà exister). Un nom déjà utilisé écrase le profil existant au lieu d'en créer un doublon — même comportement que l'onglet Profils de l'app et que l'API locale. Nécessite JPGBoost Pro, comme le reste de la CLI.

Sortie JSON

Avec --json, la sortie est un tableau JSON dans lequel chaque fichier traité correspond à un objet JSON, avec la même forme que les réponses de l'API locale, ce qui facilite l'enchaînement avec jq ou tout autre outil.

jpgboost-cli *.png --format webp --output ./out --json

# Chaînage avec jq : ne garder que les fichiers en erreur
jpgboost-cli *.png --format webp --output ./out --json \
  | jq '.[] | select(.error != null)'

Champs disponibles : path, originalSizeBytes, compressedSizeBytes, ratio, destination et error.

Codes de sortie

CodeSignification
0Tous les fichiers ont été traités avec succès
77Aucune licence Pro valide sur cette machine
Non nulAu moins un fichier a échoué ; utilisable directement dans un script ou en intégration continue

Fichiers de même nom

Deux fichiers d'entrée portant le même nom de base visent naturellement la même sortie. a/photo.jpg et b/photo.png convertis en WebP donneraient tous deux photo.webp.

JPGBoost ne les écrase pas : le second reçoit un nom distinct.

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

Les noms sont attribués dans l'ordre des arguments, indépendamment de l'ordre d'exécution avec --jobs : le résultat est donc reproductible. La même règle s'applique dans l'application, les Raccourcis, AppleScript et les dossiers surveillés.

Relancer le même export

Cette règle ne concerne que les collisions entre fichiers différents. Réexporter le même fichier vers le même dossier écrase bien sa sortie précédente, sans accumuler photo-2, photo-3, et ainsi de suite.

Vérifier l'installation

Vérifiez à tout moment que la commande répond correctement :

jpgboost-cli --help