Retrouvez cet article dans : Linux Pratique Hors série 11
- convertir une image dans un autre format ;
- redimensionner, déformer, effectuer des rotations, atténuer les couleurs, ajouter des effets spéciaux ;
- créer un montage d'images et en faire une animation ;
- créer une nouvelle image, composée de plusieurs autres images ;
- dessiner ou écrire sur une image.
Conversion de format
Les formats acceptés en lecture ou en écriture par ImageMagick sont très nombreux. Il paraît donc logique qu'il soit utilisé en ligne de commandes pour convertir un format d'image en un autre. Par exemple, la ligne suivante permet de convertir une imagemogrify -format png image.gifou encore
convert image.gif image.pngÀ noter que l'opération n'écrase pas l'image d'origine. Il est possible de réaliser la même opération par lots :
mogrify -format png *.jpgDans ce cas, ImageMagick va convertir chaque image
identify -list color
Redimensionnement d'images
Un autre usage courant consiste à redimensionner une image, grâce à l'optionconvert -resize 80% image_entrée.png image_sortie.pnget pour obtenir une image redimensionnée uniformément dont la nouvelle largeur serait 480 pixels :
convert -resize x480 image_entrée.png image_sortie.pngBien sûr, vous pouvez à nouveau utiliser la commande
mogrify -resize x480 *.pngCette commande va redimensionner et écraser les images
mogrify -resize x480> *.pngne redimensionnera l'image que si sa hauteur est plus grande que 480 pixels, ce qui fait qu'une image faisant, par exemple, 200x200 pixels sera ignorée par la commande.
Création de miniatures
Supposons que vous avez créé un répertoire de miniatures dans le même répertoire que les images à traiter. Vous pouvez créer une miniature pour chaque image et la placer dans le répertoire approprié, grâce à une commande unique composée des optionsmogrify -path miniatures -thumbnail 125x125 *.pngVous noterez que l'option
- Pour créer un cadre biseauté (Fig. 1), on utilise l'option
-raise, qui permet d'éclaircir et d'assombrir les bords d'une image pour créer un effet 3D :
convert lac_pyrenees.jpg -raise 50x50 lac_cadre.jpg
- On utilisera
-raiseou+raiseselon que l'on souhaite un effet relief ou creux. On notera que l'option-raiseutilise ici les pixels de l'image pour créer le cadre. Les dimensions de l'image restent donc identiques. - Pour ajouter un cadre 3D (Fig. 2), on utilise l'option
-frame:
convert lac_pyrenees.jpg -mattecolor peru -frame 30x30+20+8 lac_framed2.jpg
- L'option
-mattecolorintroduit la couleur du cadre (la couleurperuest utilisée ici) ; l'option-framepermet de spécifier l'épaisseur du cadre (horizontale puis verticale) et l'épaisseur du biseau (externe puis interne). - Pour ajouter une ombre portée (Fig. 3), on utilise l'option -shadow :
convert lac_pyrenees.jpg \( +clone -background lightsteelblue -shadow 60x3+30+30 \) +swap -background none -mosaic lac_shadow2.pngRemarquez ici l'emploi du caractère
+clonepermet de cloner la dernière image de la séquence (ici une seule image, l'image originale).
-backgrounddéfinit la couleur de l'ombre (ici bleu acier) ; la deuxième mention-background, hors parenthèses, définit la couleur de l'arrière-plan du canevas sur lequel est construite la mosaïque (ici l'ensemble image + ombre), pas d'arrière-plan ici (valeurnone).
-shadowpermet de définir une ombre portée ; elle admet 4 paramètres (dans cet ordre) : pourcentage d'opacité x sigma du flou x décalage vers la droite x décalage vers le bas+swappermet d'échanger la position (dans l'empilement) des deux dernières images d'une séquence (ici l'originale et son clone ombré).-mosaiccrée une mosaïque à partir d'une séquence d'images.
- Pour encadrer la photo d'une bordure colorée (Fig. 4), on peut utiliser l'option
-draw(on considère ici une photo de 2048x1536 pixels) :
convert lac_pyrenees.jpg -fill none -stroke grey -strokewidth 59 -draw 'rectangle 0,0 2047,1535' lac_bordure.jpgOn trace en fait un rectangle autour de l'image :
- L'option -draw permet de dessiner une forme géométrique (ici un rectangle de coordonnées x0, y0 x1, y1 ; d'autres formes sont possibles).
- L'option -fill définit la couleur de remplissage du rectangle (ici pas de remplissage).
- L'option -stroke définit la couleur de contour du rectangle.
- L'épaisseur du contour est contrôlée par l'option -stroke width, qui fonctionne comme suit : valeur de
strokewidth= épaisseur de bordure x2 -1. Pour une épaisseur de 30 pixels, nous avons donc spécifié-strokewidth 59(30x2-1).
 convert lac_pyrenees.jpg -bordercolor teal -border 50 lac_border.jpg

Attention, veillez ici à ce que l'option -bordercolor (qui spécifie la couleur de la bordure) soit positionnée avant l'option -border, sinon la couleur de bordure n'est pas prise en compte. Pour les dimensions de la bordure, vous pouvez spécifier la largeur uniquement (ici 50) ou la largeur et la hauteur (ex. 40x80).

Ajouter une légende à une image
Il est possible d'incruster une légende directement dans l'image de votre choix. Toutefois, un mauvais choix de couleur de police par rapport au fond de l'image peut rendre la légende totalement illisible. Une astuce consiste alors à créer un bandeau de couleur qui va être intégré dans la photographie à légender.
La commande est toutefois complexe :
 width=`identify -format %w [fichier_source]`; convert -background '[couleur_fond]' -fill [couleur_texte] -gravity [alignement_horizontal] -size ${width}x[hauteur] caption:"[Légende]" +size [photo_source.jpg] +swap -gravity [alignement_vertical] -composite [fichier_cible]
Les paramètres à spécifier sont les suivants :
[fichier_source]: définit le nom et l'extension de l'image à légender, par exempledscn0178.jpg.[couleur_fond]: définit la couleur du bandeau qui sera superposé à l'image originale, par exemple'#0008'(entre guillemets) pour un simple gris.[couleur_texte]: définit la couleur du texte de la légende, par exemplewhitepour un texte blanc.[alignement_horizontal]: indique la position du texte sur la ligne de légende, par exemplecenterpour un texte centré sur l'image.[hauteur]: définit la hauteur d'une ligne, en pixels.[alignement_vertical]: indique la position du texte sur l'image, par exemple au sud (south) de celle-ci.[fichier_cible]: définit le nom et l'extension de l'image de sortie, permettant de ne pas écraser l'image d'origine.
On déduit dans un premier temps la largeur (width) du fichier source, afin de réutiliser cette information plus tard, et ensuite on utilise la commande convert d'ImageMagick pour générer le bandeau de couleur qui portera la légende. Le texte en lui-même peut bien sûr être personnalisé ; en effet, les paramètres -font et -pointsize optionnels permettent respectivement de déterminer la police et la taille de la légende, et sa couleur est, comme nous l'avons vu, définie par l'option -fill. Le texte est ensuite simplement positionné selon l'une des directions cardinales admissibles : NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. Dans vos essais, vous prendrez garde à ce que [hauteur] reste compatible avec le paramètre -pointsize éventuellement spécifié
Corriger une photographie sous-exposée
Si vous êtes aussi bon photographe que moi, de nombreuses photographies sous-exposées doivent occuper votre album photo. Heureusement, la commande convert nous apporte une correction simple des images, grâce à la fonction -sigmoidal-contrast, qui permet d'augmenter le contraste sans pour autant saturer les zones de lumière et les ombres. Elle admet deux paramètres, séparés par une virgule : le premier indique l'intensité de la correction de contraste (essayez de faibles valeurs, de l'ordre de 1 à 4, dans un premier temps, avant de vous hasarder à des valeurs plus élevées qui gâcheront probablement vos clichés) ; le deuxième (en %) permet de tirer la luminosité vers le haut (0%, blanc) ou vers le bas (100%, noir), par translation des tons moyens de la photographie vers le pourcentage spécifié.
Par exemple :
convert [fichier_source] -sigmoidal-contrast 5,0% [fichier_cible]
va augmenter sensiblement le contraste tout en tirant la luminosité vers le haut.
Quelques autres fonctions courantes
Il s'agit d'opérateurs appliqués à la commande convert.
Paint
Cet opérateur permet de transformer une photographie en aplats aux contours diffus qui ne seront pas sans rappeler des coups de pinceau sur une toile de maître, d'où son nom. L'opérateur -paint admet un rayon en guise de valeur. Plus il est élevé, plus la peinture paraîtra grossière ; essayez des valeurs comprises entre 3 et 10 pour saisir l'influence du rayon... Exemple de commande :
convert [fichier_source] -paint 3 [fichier_cible]

Colorspace
Cet opérateur permet de changer l'espace de couleur d'une image. Une application typique consiste à s'en servir pour transformer une image couleur en image noir et blanc (Fig. 5). Il suffit en effet de spécifier à l'opérateur -colorspace la valeur Gray. Par exemple :
Negate
L'opérateur -negate va tout simplement réaliser l'inversion vidéo de la photographie (Fig. 6). Par exemple :
Et cette dernière commande peut être appliquée à un seul canal de couleur, via l'option -channel comme ceci :
Flip et Flop
Ces deux opérateurs sont très simples à mettre en oeuvre, car ils ne nécessitent aucune autre valeur pour fonctionner. Le premier, -flip, permet de retourner l'image de bas en haut, tandis que le second, -flop, permet de retourner l'image de gauche à droite, comme si elle se reflétait dans un miroir. Par exemple :
convert [fichier_source] -flip [fichier_cible]
et
convert [fichier_source] -flop [fichier_cible]
Capture d'écran
Pour effectuer une capture totale ou partielle de l'écran, on utilisera la commande import, comme suit : où N représente le nombre de secondes qui vont s'écouler avant la mise en route de la fonction capture.
import -pause N fichier_cible
Par exemple, vous souhaitez capturer une partie de votre écran. Le temps de bien organiser l'ensemble des fenêtres de l'écran et de n'afficher que ce qui vous intéresse, vous estimez le temps de pause à 10 secondes. Et vous souhaitez enregistrer la capture sous le nom de capture.png :
import -pause 10 capture.png
10 secondes après avoir entré cette commande, votre pointeur de souris se transforme en petite croix : vous n'avez qu'à sélectionner la portion d'écran que vous souhaitez capturer (par cliquer/glisser). L'image sera enregistrée à l'endroit où vous saisissez la ligne de commandes.
LIENS
- Le site officiel : http://www.imagemagick.org/script/index.php [en]
- Tous les types de transformations sont répertoriés ici : http://www.imagemagick.org/Usage/ [en]
- Les différentes options d'ImageMagick et leur syntaxe : http://www.imagemagick.org/script/command-line-options.php [en]
Retrouvez cet article dans : Linux Pratique Hors série 11





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.