[[http://www.imagemagick.org/|{{ :documentation:imagemagick.png?nolink |}}]]
**ImageMagick** est une bliothèque puissante permettant de manipuler des images (vectorielles ou matricielles).
Elle est accompagnée par une suite d'utilitaires s'utilisant en ligne de commande.
Nous allons voir quelques exemples, je vous encourage à consulter la documentation pour de plus ample détails.
===== Connaître les dimensions d'une image =====
Il faut utiliser l'utilitaire ''identity'' ((Il fait parti du « paquet » ImageMagick.)).
identify Kocherbaumwald.jpg | awk '{print $3;}'
ou
identify -verbose Kocherbaumwald.jpg | grep Geometry | awk -F': ' '{print $2;}'
Celui que je préfère
identify -format "%G\n" Kocherbaumwald.jpg
La liste des expressions que l'on peut utiliser avec l'option **-format** est disponible [[http://www.imagemagick.org/script/escape.php|ici]] (section **//Single Letter Attribute Percent Escapes//**).
===== Supprimer les métadonnées =====
Si l'on souhaite supprimer toutes les métadonnées (notamment les données EXIF) d'une image en provenant d'un appareil numérique (téléphone, appareil photo numérique, etc.).
mogrify -strip Kocherbaumwald.jpg
===== Redimensionner une image =====
Le redimensionnement en pourcentage est particulier :
* si l'on souhaite __drastiquement réduire la taille__ d'une image (au niveau de ces dimensions, hauteur x largeur) il faut préciser un pourcentage < 50%
* si l'on souhaite une « plus petite » image, il faut prendre un pourcentage >= 50%
On peut bien entendu préciser la taille en pixel.
convert Kocherbaumwald.jpg -resize 50% kocherbaumwald.png
Si l'on souhaite uniquement changer la « hauteur » (//height//), la largeur sera automatiquement ajustée :
convert Kocherbaumwald.jpg -resize x125 kocherbaumwald.png
===== Ajouter un fond =====
{{:documentation:imagemagick:linux-ventoux.png?nolink|logo Linux-Ventoux}}
Généralement sous Gimp on voit l'image du dessus comme ceci :
{{:documentation:imagemagick:lv-transparent.png?nolink|logo Linux-Ventoux avec le damier}}
Lorsqu'une image PNG possède un canal alpha (elle est transparente), il est possible de lui rajouter un fond.
convert linux-ventoux.png -background white -flatten linux-ventoux_background.png
{{ :documentation:imagemagick:linux-ventoux_background.png?nolink&100 |logo Linux-Ventoux avec un fond blanc}}
===== Jouer avec les niveaux de gris =====
Si on utilise une image PNG, il faut au préalable avoir un fond, sinon certaine partie de l'image sera mal convertie.
convert linux-ventoux_background.png -type Grayscale linux-ventoux_bw.png
ou
convert linux-ventoux_background.png -colorspace Gray linux-ventoux_bw.png
{{ :documentation:imagemagick:linux-ventoux_bw.png?nolink&100 |logo Linux-Ventoux en noir et blanc}}
===== Modifier l'intensité =====
On peut vouloir appliquer un filtre à une image. Par exemple pour modifier [[http://www.imagemagick.org/script/command-line-options.php#brightness-contrast|l'intensité]] d'une image.
[[http://commons.wikimedia.org/wiki/Template:Potd/2013-04#22|{{ :documentation:imagemagick:kocherbaumwald.jpg?nolink&200 |}}]]
convert kocherbaumwald.jpg -brightness-contrast 45x0 kocherbaumwald_brightness-45.jpg
{{ :documentation:imagemagick:kocherbaumwald_brightness-45.jpg?nolink&200 |}}
On peut également jouer sur une [[http://www.imagemagick.org/script/color.php|couleur]].
convert kocherbaumwald.jpg -fill DarkOliveGreen3 -colorize 15% kocherbaumwald_darkolivegreen.jpg
{{ :documentation:imagemagick:kocherbaumwald_darkolivegreen.jpg?nolink&200 |}}
Si on combine les deux commandes précèdentes :
convert kocherbaumwald.jpg -fill DarkOliveGreen3 -colorize 15% \
-brightness-contrast 25x0 kocherbaumwald_darkolivegreen_25.jpg
{{ :documentation:imagemagick:kocherbaumwald_darkolivegreen_25.jpg?nolink&200 |}}
===== Bordure autour d'une image =====
Il faut utiliser les options **-bordercolor** et **-border** (elle définie les dimensions de la bordure).
convert Kocherbaumwald.jpg -bordercolor white -border 5x5 \
-bordercolor gray -border 1 kocherbaumwald_border.png
===== Ajouter une ombre autour d'une image =====
convert kocherbaumwald_border.png -page +5+5 -alpha set \
\( +clone -background gray35 -shadow 60x3+5+5 \) +swap \
-background none -mosaic kocherbaumwald_shadow.png
Pour éviter l'effet d'ombre le nombre '**3**' dans notre exemple doit être égal à '**0**'. Par ailleurs, si cette valeur est supérieure aux données de l'option **-page**, l'ombre apparaît tout autours de l'image.
On peut utiliser d'autres options
convert kocherbaumwald_border.png \
\( +clone -background gray35 -shadow 60x3+5+5 \) +swap \
-background none -layers merge +repage kocherbaumwald_shadow02.png
===== Convertir un PDF en image (PNG) =====
Sous Debian (ou Ubuntu) il est nécessaire d'installer le paquet ''potrace'' pour pouvoir manipuler des PDF.
convert demo.pdf -qality 85% demo.png
On va obtenir une image transparente, il faut donc rajouter un fond (par exemple blanc) :
convert demo.pdf -quality 85% -background white -flatten demo.png
Si l'on obtient ce message d'erreur :
convert: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG
On peut rajouter cette option, ''+profile "icc"'' à la commande précédente.
Si le PDF possède plusieurs pages, mais que l'on souhaite uniquement avoir une page il faut le préciser. Par exemple **la première page** du document :
convert demo.pdf[0] -quality 58% -background white -flatten +profile "icc" demo.png