Dans le paquage d'ImageMagick, la commande Convert est la commande de base pour convertir des images. Elle dispose de très nombreuses options.
La page officielle d'ImageMagick : https://imagemagick.org/
Installer Imagemagick#
Pour installer le package ImageMagick sous Fedora, entrez la commande suivante :
sudo dnf install imagemagick
Utiliser la commande Convert#
$ convert -help
[...]
Usage: convert [options ...] file [ [options ...] file ...] [options ...] file
Convertir entre différents formats#
Pour convertir une image d'un format .PNG en format .JPG, taper la commande :
convert image.png image.jpg
Dans le cas d'une conversion en format .JPG, on peut spécifier la qualité de compression (par défaut, 92%) :
convert image.png -quality 95 image.jpg
Redimensionner une image#
Pour redimensionner à 20% de la taille initiale une image, tapez la commande :
convert image-original.jpg -resize 20% image-resized.jpg
Pour redimensionner une image en h=200 pixels de haut et l=100 pixel de largeur, tout en préservant le ratio initial :
convert example_original.png -resize 200x100 example_200x100.png
Pour forcer les dimensions, sans prendre en compte le ratio, il faut ajouter un '!' :
convert example_original.png -resize 200x100\! example_200x100.png
Comme Convert respecte le ratio de départ, on peut simplement spécifier un seul des 2 paramètres de hauteur ou de largeur :
convert example_original.png -resize 200 example_200x100.png
pour une image de 200 pixel de hauteur
convert example_original.png -resize x100 example_200x100.png
pour une image de 100 pixel de largeur
Retourner une image#
Pour retourner un image de 90° vers la droite (sens des aiguilles d'une montre) :
convert image-original.jpg -rotate 90 image-rotated.jpg
Application d'effet graphique#
ImageMagick peut appliquer toute un série d'effet à une image. Par exemple :
convert example_original.jpg -charcoal 2 example_charcoal.jpg
pour appliquer l'effet "charcaol" (fusain)
convert example_original.jpg -implode 1 example_implode.jpg
pour appliquer l'effet "implode" (implosion)
convert example_original.jpg -grayscale Rec709Luma example_grayscale.jpg
pour appliquer l'effet "grayscale" (niveaux de gris) avec une méthode non-linéaire
convert example_original.jpg -grayscale Rec709Lumanance example_grayscale.jpg
pour appliquer l'effet "grayscale" (niveaux de gris) avec une méthode linéaire
Combiner les opérations#
Toutes les opérations peuvent être combiné sur une seul ligne de commande, par exemple :
convert example_original.png -resize 400x400 -rotate 180 -charcoal 4 -quality 95 example_converted-400x400.jpg
Convertion en masse#
Grace à la ligne de commande, il estpossible de convertir en masse plusieurs images.
Par exemple grace à ce script pour redimensionner toutes les images .JPG du dossier courant :
for img in *.jpg; do
convert -resize 20% "$img" "opt-$img"
done
ou cette commande combinée va retourner toutes les images .PNG du dossier courant :
for file in *.png; do convert $file -rotate 90 rotated-$file; done
Créer un GIF animé à partir d'image#
Pour créer une animation en format GIF à partir de plusieurs images sources, utiliser la commande suivante :
# afficher chaque image 1 seconde (-delay est en 100ième de seconde) et faire boucler l'animation 3 fois
convert -delay 100 -loop 3 source1.png source2.png source3.png source4.png source5.png animation.gif
avec -loop 0
pour boucler indéfiniment
Il est possible d'utiliser toute les images du dossier courant en utilisant le caractère "*" :
convert *.png animation.gif
Ou d'utiliser un fichier texte messources.txt
contenant les chemins des images à utiliser :
source1.png
source2.png
source3.png
source4.png
source5.png
Si le nom de l'image contient des espaces, il faut l'entourer avec des "'".
Exemple : 'image source.png'
puis la commande :
convert @messources.txt animation.gif