:: Yves Jacolin :: Ludovic Granjon :: Softlibre :: OSGeo-fr ::
"Quand on veut reprendre avec utilité, et montrer à un autre qu'il se trompe, il faut observer par quel côté il envisage la chose, car elle est vraie ordinairement de ce côté-là, et lui avouer cette vérité, mais lui découvrir le côté où elle est fausse." Pascal, Pensées Br. 9, Lafuma 5.

Retour vers le sommaire

Chapitre 4 Processus de la ligne de commande

La ligne de commande d'ImageMagick peut être aussi simple que ça :

$ convert image.jpg image.png

ou aussi complexe que ça :

$ convert label.gif +matte
\( +clone  -shade 110x90 -normalize -negate +clone  -compose Plus
-composite \) \
\( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \
-delete 0 +swap -compose Multiply -composite  button.gif

Sans en savoir beaucoup sur la ligne de commande d'ImageMagick, vous pouvez pensez probablement que la première commande convertie une image au format JPEG à une image au format PNG. Cependant, très peu peuvent réaliser la deuxième commande, plus complexe, qui donne à une imagette en 2 dimensions une vue en 3 dimensions avec une texture et une simulation de profondeur : original original original

Dans la prochaine partie, nous dissèquerons l'anatomie de la ligne de commande d'ImageMagick. Heureusement, après avoir soigneusement lu et mieux compris comment fonctionne la ligne de commande, vous devriez être capable d'accomplir de complexes images sans avoir recours aux interfaces de programmes parfois intimidantes.

4.1 Anatomie de la ligne de commande

La ligne de commande d'ImageMagick consiste en :

  1. un ou plusieurs fichier(s) en entrée ;
  2. zéro, un, ou plusieurs paramètre(s) d'image ;
  3. zéro, un, ou plusieurs opérateurs d'image ;
  4. zéro, une, ou plusieurs séquence(s) d'opérateur d'image ;
  5. zéro, un, ou plusieurs pile(s) d'image ;
  6. zéro ou un nom de fichier image en sortie (nécessaire pour convert, composite, montage, compare, import, et conjure).

Vous trouverez une explication détaillée de chacune des parties constituantes des commandes dans les parties qui suit.

4.2 Fichier en entré

ImageMagick étend le concept de fichier en entré pour inclure :

  1. rassemblement des noms de fichiers ;
  2. un format d'image explicite ;
  3. utilise des images et des motifs pré-installés ;
  4. lire une image à partir de son entrée standard ;
  5. sélectionner certaine séquence d'une image ;
  6. sélectionner certaine partie d'une image.

Chacune de ces extensions sont expliquées dans les prochains paragraphes.

4.2.1 rassemblement des noms de fichiers

Dans les consoles Unix, certains caractères tel que l'astérisque (*) et le point d'interrogation (?) cause automatiquement des listes de nom de fichier pour être généré, basé sur un assortiment de modèles. Cette caractéristique est connu comme étant le rassemblement de noms de fichier. ImageMagick support cela pour des systèmes, tel que Windows®, qui ne le supporte par nativement. Par exemple, supposez que vous voulez convertir 1.jpg, 2.jpg, 3.jpg, 4.jpg, et 5.jpg situé dans votre répertoire en cours en une animation GIF. Vous pouvez simplement vous référer à l'ensemble des fichiers par cette commande :

$ convert *.jpg images.gif

4.2.2 format d'image explicite

Les images sont stockées en une myriade de formats d'image incluant les très connus JPEG, PNG, TIFF et tous les autres. ImageMagick doit connaître le format de l'image avant de la lire et de l'utiliser. La plupart des formats ont une signature à l'intérieure de l'image qui identifie uniquement ce format. Sans cela, ImageMagick se sert de l'extension du nom du fichier pour déterminer le format. Par exemple, image.jpg informe ImageMagick qu'il lit une image au format JPEG. Dans certain cas, l'image peut ne pas contenir la signature et/ou l'extension n'identifie pas le format de fichier. Dans ce cas un format d'image explicite doit être spécifié. Par exemple, supposez que notre image s'appelle image et contient les valeurs d'intensité rouge, verte et bleu. ImageMagick n'a aucun moyen de déterminé automatiquement le format d'image, vous devez donc l'expliciter ainsi :

$ convert -size 640x480 -depth 8 rgb :image image.png

4.2.3 Images et motifs pré-installés

ImageMagick a un certain nombre d'images et de motifs pré-installés. Pour les utilisez le motif de l'arrière-plan, par exemple, faites :

$ convert -size 640x480 pattern :checkerboard checkerboard.png

Les images et motifs utilisables sont décris dans la partie P.IV Images pré-installées.

4.2.4 entrée standard

Unix permet d'orienter la sortie d'une commande vers une autre. ImageMagick permet d'orienter une commande vers une autre en utilisant le nom de fichier -. Dans cet exemple, nous orientons la sortie de convert vers le programme display :

$ convert magick :logo gif :- | display gif :-

Ici le format explicite est optionnel. Le format d'image GIF a une unique signature à l'intérieure de l'image, donc ImageMagick peut facilement reconnaître ce format comme étant GIF.

4.2.5 Sélectionner des séquences

Certains formats d'images contiennent plus qu'une trame d'image. Peut être que vous  voulez seulement la première image, ou la dernière, ou n'importe laquelle entre. Vous pouvez préciser quelle trame d'images à lire en ajoutant au nom du fichier image, le domaine de la trame encadré par des crochets. Ici notre image contient plus qu'une trame mais nous voulons seulement la première :

$ convert images.gif[0] image.png

Les consoles Unix interprète généralement les crochets, vous devez donc les protéger par des guillemets :

$ convert 'images.gif[0]' image.png

Vous pouvez lire plus qu'une image de la séquence avec un domaine de trame. Par exemple, supposez que vous voulez les quatre premières trames d'une séquence :

$ convert 'images.gif[0-4]'images.mng

Enfin, vous pouvez lire plus qu'une image d'une séquence, dans n'importe quel ordre :

$ convert 'images.gif[3,2,4]' images.mng

Cela lit la troisième image dans la séquence, suivit par la seconde, puis la quatrième.

4.2.6 Sélectionner une partie d'une image

Les images brutes sont une séquence d'intensité de couleur sans méta informations supplémentaire tels que la largeur, la hauteur ou la signature de l'image. Avec des formats d'images brutes, vous devez spécifier la largeur et la hauteur de l'image mais vous pouvez également spécifier une région de l'image à lire. Dans notre exemple, l'image est au format RGB 8 bit brute et a une largeur de 600 pixels et une hauteur de 4 000 pixels. Cependant, nous voulons seulement une région de 600 par 400 proche du centre de l'image :

$ convert -size 6000x4000 -depth 8 'rgb :image [600x400+1900+2900]' image.jpg

Vous pouvez obtenir le même résultat avec l'option -extract :

$ convert -size 6000x4000 -depth 8 -extract 600x400+1900+2900 rgb :image image.jpg

4.3 Paramètre d'image

Un paramètre d'image persiste dés qu'il apparaît dans la commande et peut affecter tous les processus tels que la lecture d'une image, un opérateur d'image, ou lors de l'écriture d'une image. Un paramètre d'image est défini jusqu'à ce qu'il soit remis par défaut ou jusqu'à la fin de la commande. Les paramètres d'image inclus :

—adjoin —antialias —authenticate —background —bordercolor —box —channel —colors —colorspace —comment —compress —debug —define —delay —density —depth —display —dispose —dither —endian —extract —fill —font —format —fuzz —gravity —interlace —label —limit —log —matte —mattecolor —monitor —monochrome —orient —page —pointsize —preview —quality —sampling-factor —size —texture —treedepth —type —units —verbose

Dans cet exemple, -channel s'applique à chaque images puisque comme nous l'avons mentionné, les paramètres persistent :

$ convert -channel RGB wand.png wizard.png images.png

4.4 Opérateur d'image

Un opérateur d'image diffère d'un paramètre est qu'il affecte l'image directement dés qu'il apparaît dans la commande. Un opérateur est une option non listé comme un paramètre d'image ou une séquence d'opérateur. Contrairement à un paramètre d'image qui persiste jusqu'à la fin de la commande, un opérateur est appliqué à une image puis oublié.

''--affine --annotate --bias --black--threshold --blue-primary --blur --border --charcoal --chop
--clip --clip --path --colorize --compose --contrast --convolve --crop --cycle --despeckle
--draw --edge --emboss --encoding --enhance --equalize --evaluate --family --filter --flip
--flop --floodfill --frame --gamma --gaussian --geometry --green-primary --implode --intent
--lat --level --linewidth --loop --map --mask --median --modulate --negate --noise --normalize
--opaque --ordered-dither --paint --pen --posterize --raise --profile --quiet
--radial--blur --raise --random-threshold --red-primary --region --render --resample --roll
--rotate --sample --scale --separate --sepia-tone --segment --shade --shadow --sharpen --shave 
--shear --sigmoidal-ontrast --solarize --splice --spread --stretch --strip --stroke --strokewidth
--style --support --swirl --threshold --thumbnail --tile --tint --transform --transparent --trim 
--undercolor --unsharp --version --virtual-pixel --wave --weight --white-point --white --threshold''

Dans cet exemple, -negate transforme l'image baguette en négatif mais pas le magicien :

$ convert baguette.png -negate magicien.png images.png

4.5 Séquence des opérateurs d'image

Un séquence d'opérateur d'image diffère d'un paramètre en ce qu'il affecte une séquence d'image dés qu'il apparaît dans la commande.

–append –average –coalesce –combine –composite –crop –deconstruct –flatten –fx –map –morph –mosaic –process –scene –write

À l'école, votre professeur vous a probablement permit de travail sur un problème sur un bout de papier puis de copier le résultat sur votre feuille au propre. Une pile d'image et similaire. Elle vous permet de travailler sur une image ou une séquence d'images à part puis d'introduire le résultat dans la commande. La pile d'image est délimitée par des parenthèses. Les opérateurs d'image agissent seulement sur les images de la pile en cours. Par exemple, nous pouvons limiter la transformation en négatif seulement à l'image magicien comme cela :

$ convert baguette.gif \( magicien.gif -negate \) +append images.gif

Remarquez que les parenthèses sont échappées. C'est à dire qu'elles sont précédées d'un anti-slash. Cela est obligatoire sous Unix, puisque les parenthèses sont des caractères spéciaux. L'anti-slash informe la console de ne pas interpréter ces caractères et de les envoyer vers ImageMagick.

En plus des opérateurs d'image déjà présentés, ces opérateurs d'image sont plus utiles lorsqu'ils sont utilisés dans des piles 'images :

–clone –delete –insert –swap

Remarquez, l'option -clone est seulement valide entre parenthèses.

4.6 Nom de fichier en sortie

ImageMagick étend le concept de nom de fichier en sortie pour inclure :

  1. un format d'image explicite ;
  2. écriture de la sortie standard ;
  3. préciser la taille du carreau TIFF.

Chacune de ces extensions sont expliquées dans les prochains paragraphes.

4.6.1 Format d'image explicite

Les images sont stockées en une myriade de formats d'image incluant les très connus JPEG, PNG, TIFF  et tous les autres. ImageMagick doit connaître le format de l'image avant de l'écrire. ImageMagick se sert de l'extension du nom du fichier pour déterminer le format. Par exemple, image.jpg informe ImageMagick d'écrire l'image au format JPEG. Dans certain cas, le nom de fichier n'identifie pas le format de fichier. Dans ce cas l'image est écrite dans le format dans laquelle elle a été lue à moins qu'un format ait été précisé.

Par exemple, supposez que vous voulez créer un fichier d'image dans le format brut d'intensité rouge, vert et bleu :

$ convert image.jpg rgb :image

4.6.2 Standard Out

Unix permet d'orienter la sortie d'une commande vers une autre. ImageMagick permet d'orienter une commande vers une autre en utilisant le nom de fichier -. Dans cet exemple, nous orientons la sortie de convert vers le programme display :

$ convert magick :logo gif :- display gif :-

Ici le format explicite est optionnel. Le format d'image GIF a une unique signature à l'intérieure de l'image, donc ImageMagick peut facilement reconnaître ce format comme étant GIF.

4.6.3 Taille du carreau TIFF

Vous pouvez préciser la taille du carreau TIFF en ajoutant au nom de fichier avec la largeur et la hauteur du carreau encadré de crochet. Ici, nous créons un carreau d'image qui a 64 pixels de largeur et 64 pixels de hauteur par cette commande :

$ convert magicien.png magicien.tif[64x64]

Les consoles Unix interprète généralement les crochets, vous devez donc encadrer les noms de fichier entre de simple guillemet :

$ convert magicien.png 'magicien.tif[64x64]'

Contact - Information et copyright - Statistique

Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki