1. À quoi ça sert
ImageMagick, c'est l'outil qu'on sort quand on veut manipuler des images sans ouvrir un logiciel graphique. Pas de Photoshop, pas de GIMP, pas de clic-droit "Redimensionner" sur cent fichiers à la suite : juste une commande dans un terminal, et le travail est fait.
C'est une suite d'outils qui sait lire, écrire et transformer plus de 200 formats — du JPEG classique au PDF en passant par le HEIC des iPhones, le WebP de Google ou le bon vieux TIFF des scanners. L'absence d'interface graphique est ici une fonctionnalité, pas un défaut : elle permet de l'utiliser partout où il n'y a pas d'écran, et surtout dans tout ce qui doit tourner tout seul.
On le retrouve donc naturellement :
- sur des serveurs web qui génèrent des miniatures à la volée,
- dans des scripts qui traitent des dossiers entiers d'un coup,
- dans des pipelines CI/CD pour préparer des assets,
- dans des conteneurs Docker, accessibles uniquement en SSH.
Depuis la version 7, tout passe par une commande unique : magick. Les anciennes commandes (convert, identify, mogrify...) existent toujours pour la compatibilité, mais elles ne sont plus la norme.
2. Installation
Sur Debian ou Ubuntu :
sudo apt install imagemagick
On vérifie ensuite que tout est en place :
magick -version
La sortie indique aussi les délégués compilés (libwebp, libheif, libraw, etc.). Si un format précis vous intéresse, c'est ici qu'il faut regarder : ImageMagick ne sait lire un format que si la bibliothèque correspondante est présente au moment de la compilation.
3. Comment ImageMagick raisonne
Toutes les commandes suivent la même logique :
magick [entrée] [options] [sortie]
L'image est chargée en mémoire, puis chaque option s'applique dans l'ordre où elle est écrite, comme une chaîne de traitement. Ce point est important : déplacer une option dans la ligne peut changer le résultat final.
Exemple :
magick input.jpg -resize 800x600 -quality 85 output.jpg
Ici, l'image est lue, redimensionnée à 800×600, puis compressée à 85% de qualité, puis écrite sur le disque. Si on inversait -quality et -resize, le résultat serait identique dans ce cas précis, mais avec des opérations qui modifient les pixels (flou, conversion d'espace colorimétrique, recadrage), l'ordre devient critique.
4. Convertir d'un format à un autre
Le cas le plus simple : changer l'extension du fichier de sortie suffit.
magick image.png image.jpg
ImageMagick détecte le format cible à partir de l'extension et fait la conversion. C'est aussi simple que ça pour 90% des cas.
Quand on veut être plus précis — par exemple forcer une profondeur de couleur particulière — on l'indique explicitement :
magick image.png -depth 8 image.jpg
Utile quand on récupère des images en 16 bits par canal qu'on veut ramener à du 8 bits standard, soit pour gagner de la place, soit pour garantir la compatibilité avec un logiciel récalcitrant.
5. Redimensionner
La méthode brutale
magick image.jpg -resize 800x600 image_resized.jpg
Cette commande redimensionne à 800×600 en respectant les proportions par défaut, contrairement à ce qu'on pourrait croire. Si l'image source est en 4:3, elle rentrera pile dedans ; si elle est en 16:9, ImageMagick choisira la dimension la plus contraignante et l'autre sera plus petite que demandé.
Pour forcer exactement ces dimensions quitte à déformer l'image, il faut ajouter un point d'exclamation :
magick image.jpg -resize 800x600! image_resized.jpg
Ne rétrécir que les grandes images
C'est probablement le cas le plus utile au quotidien : on a un dossier d'images, on veut s'assurer qu'aucune ne dépasse 1600 pixels, mais on ne veut pas agrandir les petites (ce qui dégraderait leur qualité).
magick image.jpg -resize "1600x1600>" image_resized.jpg
Le > signifie « uniquement si l'image est plus grande ». Les guillemets sont nécessaires car > est interprété par le shell comme une redirection. On peut aussi échapper le caractère avec \>.
En pourcentage
magick image.jpg -resize 50% image_small.jpg
Pratique quand on veut diviser la taille par deux sans calculer les dimensions exactes.
6. Qualité et poids du fichier
Pour les JPEG, le paramètre -quality règle le compromis entre fidélité visuelle et poids du fichier :
magick image.jpg -quality 85 image.jpg
Quelques repères en pratique :
- 100 : qualité maximale, fichier énorme, différence imperceptible avec 95.
- 85 : la valeur par défaut de la plupart des appareils photo, et un excellent compromis pour le web.
- 75 : encore très acceptable, gain de place notable.
- En dessous de 70 : les artefacts deviennent visibles, surtout sur les aplats de couleur.
Supprimer les métadonnées
Les fichiers issus d'appareils photo ou de smartphones embarquent beaucoup d'informations : modèle de l'appareil, date, parfois coordonnées GPS, miniature intégrée, profil colorimétrique... Tout ça peut peser plusieurs dizaines de kilo-octets, et surtout poser des problèmes de confidentialité.
magick image.jpg -strip image.jpg
L'option -strip fait le ménage. À utiliser systématiquement avant de publier des photos sur le web, et indispensable dès qu'on parle de RGPD ou d'anonymisation. Attention en revanche pour la photographie professionnelle où certaines métadonnées (droits d'auteur, profil ICC) peuvent être nécessaires.
7. Recadrer et adapter à un cadre
Recadrage classique
magick image.jpg -crop 800x600+100+50 output.jpg
La syntaxe se lit comme une fenêtre qu'on découpe dans l'image : largeur × hauteur, décalée de 100 pixels depuis la gauche et 50 pixels depuis le haut.
Remplir un cadre exact, sans déformation
C'est le besoin typique des miniatures de site : on veut toutes les vignettes en 800×600 pile, peu importe le format des photos d'origine.
magick image.jpg -resize 800x600^ -gravity center -extent 800x600 output.jpg
Trois étapes enchaînées :
-resize 800x600^redimensionne pour que l'image remplisse le cadre (le^inverse la logique habituelle : on prend la plus grande dimension comme contrainte, pas la plus petite).-gravity centerindique qu'on veut centrer le découpage.-extent 800x600coupe ce qui dépasse pour obtenir exactement la taille voulue.
Le résultat : aucune déformation, aucune bande noire, juste un éventuel rognage sur les bords les plus longs.
8. Traiter un dossier entier
Une boucle Bash suffit pour convertir tous les PNG d'un dossier en JPEG :
for f in *.png; do
magick "$f" "${f%.png}.jpg"
done
La syntaxe ${f%.png} retire l'extension .png du nom, on y ajoute .jpg. Simple et fiable.
Pour modifier les fichiers sur place, ImageMagick fournit mogrify :
mogrify -resize "1600x1600>" *.jpg
Cette commande écrase chaque fichier par sa version redimensionnée. C'est rapide et pratique, mais ça veut aussi dire qu'il n'y a pas de retour en arrière : si la commande est mal écrite, le dossier original est perdu. Règle absolue : travailler sur une copie, ou s'assurer d'avoir une sauvegarde.
9. Texte et filigranes
Apposer une mention textuelle
magick image.jpg \
-gravity southeast \
-pointsize 24 \
-fill white \
-annotate +10+10 "© MonSite" \
image_marked.jpg
-gravity ancre le texte dans un coin de l'image (les neuf positions classiques : northwest, north, northeast, west, center...), et -annotate ajoute un décalage par rapport à ce point d'ancrage. Ici, +10+10 éloigne le texte de 10 pixels du coin inférieur droit.
Superposer un logo ou un watermark image
magick image.jpg watermark.png -gravity center -composite output.jpg
L'image principale est lue en premier, le filigrane en second, puis -composite les fusionne. Si le watermark a un canal alpha (transparence), il est respecté.
10. Couleurs et tons
Passage en noir et blanc :
magick image.jpg -colorspace Gray output.jpg
Réglage de la luminosité et du contraste (valeurs en pourcentage, positives ou négatives) :
magick image.jpg -brightness-contrast 10x5 output.jpg
Ici, +10% de luminosité et +5% de contraste. Pour assombrir, on utilise des valeurs négatives : -brightness-contrast -10x0.
11. Inspecter une image
Pour obtenir les informations essentielles — format, dimensions, profondeur :
magick identify image.jpg
Pour tout savoir, y compris les métadonnées EXIF, le profil colorimétrique, l'histogramme :
magick identify -verbose image.jpg
La sortie verbeuse peut faire plusieurs pages, mais c'est inestimable pour diagnostiquer un problème ou comprendre d'où vient un fichier.
12. Formats modernes
Le WebP de Google offre une compression nettement meilleure que le JPEG à qualité équivalente, et il est aujourd'hui supporté par tous les navigateurs courants :
magick image.jpg -quality 80 image.webp
L'AVIF va encore plus loin en termes de compression, au prix d'un encodage plus lent :
magick image.jpg image.avif
Si la commande échoue avec une erreur de délégué, c'est que votre installation d'ImageMagick a été compilée sans le support AVIF — il faudra installer libheif ou recompiler.
13. Quelques règles à se fixer
- Toujours travailler sur une copie quand on découvre une nouvelle commande.
mogrifyen particulier ne pardonne pas. - Stripper les métadonnées avant toute publication web.
- Pour de très gros volumes (plusieurs milliers d'images, ou des images très lourdes), regarder du côté de
libvips: c'est plus rapide et beaucoup moins gourmand en mémoire qu'ImageMagick. Pour tout le reste, ImageMagick est largement suffisant. - Automatiser dès qu'on répète : si la même commande revient deux fois, elle mérite un script.
- Lire les messages d'erreur : ImageMagick est verbeux, et la plupart des problèmes (délégué manquant, permissions, format non reconnu) sont explicitement nommés dans la sortie.
14. Là où on le croise vraiment
En pratique, ImageMagick finit presque toujours dans les mêmes situations :
- préparation d'images pour un site web (redimensionnement + compression + strip),
- génération de miniatures à la volée côté serveur,
- normalisation d'un catalogue photo hétérogène (formats, tailles, profils),
- conversion massive d'archives anciennes vers des formats modernes,
- nettoyage des métadonnées avant diffusion publique.
ImageMagick fait partie de ces outils qu'on apprivoise lentement mais qu'on garde longtemps. Au début, on copie des commandes trouvées en ligne sans tout comprendre. Puis on commence à reconnaître les options, à les combiner, à écrire ses propres scripts. Et un jour, on se rend compte qu'on a remplacé un logiciel entier par trois lignes de Bash — et qu'on n'a jamais été aussi efficace pour traiter des images.
Commentaires
Aucun commentaire pour l'instant. Soyez le premier !
Laisser un commentaire