Petit tour en terre d'ImageMagick
A quoi peu bien servir un logiciel de traitement d'image en ligne de commande ? En plus, son utilisation ne semble pas intuitive au premier abord. Nous allons voir dans ce billet qu'ImageMagick possède des atouts très intéressants :
- traitement d'images par lot
- traitement sur 16 bits
- gestion de calques (si, si, en se débrouillant bien, nous pouvons faire "comme si")
Convert, composite et mogrify
Les trois commandes principales pour travailler avec ImageMagick sont convert, composite et mogrify. La première "convert" permet de faire des modifications sur une image et les enregistrer dans une nouvelle image. Cette commande permet aussi de fusionner 2 images avec différents modes de fusion et d'utiliser une troisième image comme masque. La commande composite ne permet que de fusionner 2 images entre elles. Mogrify permet de modifier une image et d'enregistrer le résultat sur la source.
Il existe aussi la possibilité d'utiliser des scripts MSL (?Magick Scripting Language) qui sont des scripts XML. Ce n'est pas le propos de ce billet, peut-être un prochain.
Filtre passe-haut
Voici une petite fonction bash qui permet produire le résultat d'un filtre passe-haut. Pour rappel, un filtre passe-haut s'obtient :
- en plaçant le négatif d'une image par dessus elle-même
- en floutant ce négatif (taille du filtre)
- en passant l'opacité de ce négatif à 50%
La fonction prend en paramètre :
- le nom de l'image d'origine
- le nom de l'image résultat
- le radius du filtre (sa taille)
HiPassFilter()
{
convert $1 ( $1 -blur 0x$3 -negate ) ( $1 -fill gray50 -colorize 100 ) -compose over -type Grayscale -composite $2
}
Elle est constituée d'une seule commande "convert" que nous allons détailler :
- le premier paramètre est l'image d'origine
$1
- le second paramètre se trouve en-capsulé entre les premiers ( et ), il s'agit du négatif que nous superposons
( $1 -blur 0x$3 -negate )
- le troisième paramètre se trouve en-capsulé entre les seconds ( et ), il s'agit du masque
( $1 -fill gray50 -colorize 100 )
- le quatrième paramètre détermine la façon dont les images vont être composées. Ici nous plaçons juste le négatif au-dessus.
-compose over
- le cinquième paramètre converti le résultat en niveau de gris
-type Grayscale
- le dernier paramètre détermine le nom de la sortie
Les ( et ) permettent de créer des sous-traitements qui sont calculés avant le traitement principal. Seule la commande "convert" permet d'utiliser des sous-traitement. Dans le cas du second paramètre, nous floutons l'image (-blur 0x$3) puis nous l'inversons (-negate). Dans le cas du troisième paramètre, nous remplissons le masque avec un gris à 50% (-fill gray50). Comme ce masque est uniforme, cela revient à modifier l'opacité du négatif et la positionner à 50%.
Mode de fusion
Pour connaitre les différents mode de fusion/composition des images, il suffit de faire un : convert -list compose. Nous retrouvons les classiques "additionner", "multiplier", "superposer" et ausi "Lumière dure" ou "Lumière douce". Actuellement, ma version d'Imagemagick comporte plus de 55 modes de fusion !
A travers ce petit exemple, nous avons vu qu'ImageMagick offre des possibilités similaires à Gimp en matière de manipulation de calque. La différence est qu'ImageMagick ne sera utilisé que dans des scripts que nous pouvons appeler à partir du gestionnaire de fichiers.
- traitement d'images par lot
- traitement sur 16 bits
- gestion de calques (si, si, en se débrouillant bien, nous pouvons faire "comme si")
Convert, composite et mogrify
Les trois commandes principales pour travailler avec ImageMagick sont convert, composite et mogrify. La première "convert" permet de faire des modifications sur une image et les enregistrer dans une nouvelle image. Cette commande permet aussi de fusionner 2 images avec différents modes de fusion et d'utiliser une troisième image comme masque. La commande composite ne permet que de fusionner 2 images entre elles. Mogrify permet de modifier une image et d'enregistrer le résultat sur la source.
Il existe aussi la possibilité d'utiliser des scripts MSL (?Magick Scripting Language) qui sont des scripts XML. Ce n'est pas le propos de ce billet, peut-être un prochain.
Filtre passe-haut
Voici une petite fonction bash qui permet produire le résultat d'un filtre passe-haut. Pour rappel, un filtre passe-haut s'obtient :
- en plaçant le négatif d'une image par dessus elle-même
- en floutant ce négatif (taille du filtre)
- en passant l'opacité de ce négatif à 50%
La fonction prend en paramètre :
- le nom de l'image d'origine
- le nom de l'image résultat
- le radius du filtre (sa taille)
HiPassFilter()
{
convert $1 ( $1 -blur 0x$3 -negate ) ( $1 -fill gray50 -colorize 100 ) -compose over -type Grayscale -composite $2
}
Elle est constituée d'une seule commande "convert" que nous allons détailler :
- le premier paramètre est l'image d'origine
$1
- le second paramètre se trouve en-capsulé entre les premiers ( et ), il s'agit du négatif que nous superposons
( $1 -blur 0x$3 -negate )
- le troisième paramètre se trouve en-capsulé entre les seconds ( et ), il s'agit du masque
( $1 -fill gray50 -colorize 100 )
- le quatrième paramètre détermine la façon dont les images vont être composées. Ici nous plaçons juste le négatif au-dessus.
-compose over
- le cinquième paramètre converti le résultat en niveau de gris
-type Grayscale
- le dernier paramètre détermine le nom de la sortie
Les ( et ) permettent de créer des sous-traitements qui sont calculés avant le traitement principal. Seule la commande "convert" permet d'utiliser des sous-traitement. Dans le cas du second paramètre, nous floutons l'image (-blur 0x$3) puis nous l'inversons (-negate). Dans le cas du troisième paramètre, nous remplissons le masque avec un gris à 50% (-fill gray50). Comme ce masque est uniforme, cela revient à modifier l'opacité du négatif et la positionner à 50%.
Mode de fusion
Pour connaitre les différents mode de fusion/composition des images, il suffit de faire un : convert -list compose. Nous retrouvons les classiques "additionner", "multiplier", "superposer" et ausi "Lumière dure" ou "Lumière douce". Actuellement, ma version d'Imagemagick comporte plus de 55 modes de fusion !
A travers ce petit exemple, nous avons vu qu'ImageMagick offre des possibilités similaires à Gimp en matière de manipulation de calque. La différence est qu'ImageMagick ne sera utilisé que dans des scripts que nous pouvons appeler à partir du gestionnaire de fichiers.