Image Magick est un ensemble d'outils permettant de retoucher et de
modifier des images ou des séquences vidéo dans un grand nombre de
formats. Ces outils sont tous en ligne de commande :
animate
, display
, identify
,
import
, montage
, mogrify
,
composite
, compare
, conjure
.
Ainsi, s'il n'est pas réaliste de les utiliser pour de la retouche
proprement dite, ils se montreront particulièrement efficaces pour des
modifications en (grande) série.
Voyons briévement l'utilisation de certains d'entre eux :
display
: permet l'affichage d'images,
convert
: permet de modifier des images ; après
modification, un nouveau fichier est produit,
mogrify
: idem ; après modification, le fichier
original est remplacé par la version modifiée ; pas de
possibilité d'annulation, en général,
import
: permet la copie d'écran, avec toute la
richesse d'ImageMagick (par exemple pour ceux qui conéoivent la
copie d'écran sous forme de... video),
montage
: est-il besoin d'expliquer ?
identify
: permet d'obtenir des informations sur un
fichier image, en particulier : format, poids, dimensions,
nombre de couleurs, etc...
Tous ces outils en ligne de commande fonctionnent tous suivant le modèle très Unixien :
$ commande -liste_d_options fichier(s)_d_entrée fichier(s)_de_sortie
Passons donc à quelques exemples.
$ display image.jpg
$ display chemin/vers/le/dossier/*.*
permet d'afficher la première image ; par pression sur la barre d'espacement, on passe à la suivante. Arrivé à la derniére, on revient à la première. Ceci constitue un très pratique visionneur d'images en ligne de commande.
$ convert image.png image.jpg
(une nouvelle image sera créée) ou encore :
$ mogrify -format jpg image.png
À noter que cette derniére possibilité permet de traiter plusieurs images : il suffit d'en donner la liste. Par exemple :
$ mogrify -format jpg *.png
permet de convertir en JPEG toutes les images PNG du dossier actuel.
On dispose d'une image que l'on souhaite redimensionner à 640x480.
$ convert -geometry '640x480!' image.jpg image-réduite.jpg
$ convert -geometry 640x480 image.jpg image-réduite.jpg
$ convert -geometry 640x640 image.jpg image-réduite.jpg
$ convert -geometry '640x480>' image.jpg image-réduite.jpg
$ convert -colors 256 image.jpg image_finale.jpg
Ici, nous allons enfin voir toute la puissance de la combinaison d'Imagemagick et d'un shell Unix. Ou comment appliquer la même modification aux 777 images d'un dossier.
On veut réduire chacune de ces images en ajoutant le suffixe
-reduc
avant l'extension (qui est
ici .jpg
) :
$ for f in *.jpg; do convert -geometry 640x480 $f `echo "$f"|sed s/.jpg/-reduc.jpg/`; done
Explications : les fichiers concernés sont
tous les JPEG d'un dossier (d'où le *.jpg
; penser
é écrire *.jpg *.jpeg *.JPG *.JPEG
si certains noms
sont donnés en majuscules). Nous n'allons pas nous apesantir sur
convert -geometry 640x480
. Le fichier d'entrée, une
fois que nous sommes à l'intérieur de la boucle, sera identifié
par $f
Le fichier de sortie sera composé en rappelant $f
(echo "$f"
) mais en appliquant auparavant la
modification suivante : toute apparition de .jpg
sera remplacée par -reduc.jpg
(modification
sed s/.jpg/-reduc.jpg/
effectuée par le caractère
pipe : |
). Le tout est placé entre `
`
(les contre-apostrophes obtenues avec Alt Gr 7) pour
interdire l'application du pipe hors de cette commande
echo
.
$ mogrify -geometry 640x480 *.jpg
C'est possible en copiant les originaux dans un dossier de
travail et en écrasant ensuite ces copies avec
mogrify
:
$ mkdir travail && cp -v *.jpg travail && cd travail
puis :
$ mogrify -geometry 640x480 *.jpg
On peut ensuite faire le même travail de renommage qu'en 1. avec
la commande rename
. Il peut y avoir deux façons de
l'utiliser selon la version de rename
installée sur
votre système, soit :
$ rename .jpg -reduc.jpg *.jpg
soit :
$ rename s/.jpg/-reduc.jpg/ *.jpg
$ mogrify -format jpeg *.tif *.tiff
pour convertir en JPEG toutes les images TIFF du dossier actuel.
Ce travail sera fait avec les contraintes suivantes : les miniatures auront pour dimension maximale 120 ; elles seront espacées de 25 au moins ; chaque image sera annotée avec le nom de fichier, et en-dessous, le poids entre parenthèses. Elles auront une bordure noire large de 3. Comme plusieurs planches contact seront nécessaires (à moins d'avoir une énorme et unique planche de contact comportant 777 miniatures), on décide de mettre 24 images par planche (6 colonnes et 4 lignes) et de numéroter les planches-contact par trois chiffres à partir de 000.jpg.
$ montage -geometry 120x120+25+25 -borderwidth 3 -bordercolor black -tile 6x4 -label "%f \n (%b)" *.jpg %03d.jpg