Imagemagick

Imagemagick est un logiciel en ligne de commande pour la manipulation de fichiers images. Il fait partie des logiciels “couteaux suisses” de manipulation de fichiers multimédia (avec ffmpeg et sox). Imagemagick est utile pour :

  • redimensionner une image
  • changer de format
  • assembler des images pour en faire des animations ou des fichiers pdf
  • composer des images
  • etc.

Ce logiciel porte bien son nom, arriver à s'en servir correctement tient parfois de la magie noire…

Imagemegick se compose de plusieurs commandes indépendantes : convert, identify, mogrify, composite, montage, display, animate, compare, stream, import
Avec la version 7 d'Imagemagick, magick est ajoutée pour l'ensemble des commandes précédentes (magick convert, magick composite, etc.).

La commande mogrify permet de traiter toutes les images d'un répertoire. (cf : http://www.imagemagick.org/Usage/basics/#mogrify )
Si mogrify ne fait pas l'affaire, il est aussi possible d'utiliser convert, dans ce cas il vaut mieux passer par un script qui traitera les images une par une, car convert charge toutes les images en mémoire avant de les transformer.

Réduire toutes les images d'un répertoire

# 20200510 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
mogrify -path small -resize 16x24! *.png

Toutes les images au format png seront réduites à exactement 16×24 pixels et enregistrées dans le sous-dossier “small” (à créer au préalable)

Agrandir toutes les images d'un répertoire sans interpolation

# 20210525 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
mogrify -resize 200% -filter point *.png

Utile pour agrandir du pixel art sans aliasing

Assembler deux images

# 20210824 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
# deux images de 877x1240px assemblées en un A4 paysage @ 150dpi
convert -page +0+0 gauche.png -page +878+0 droite.png -mosaic compo.png

Composer une planche contact

# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
# une image est composée à partir d'une série d'images à taille réduite
montage 001.tif 002.tif 003.tif 004.tif 005.tif 006.tif 007.tif 008.tif -tile 2x4 -geometry 150x225 montage.jpg

Miniatures de tout un répertoire

# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
# [0] permet d'utiliser uniquement la 1re image de fichiers multi images (gif animé, par exemple)
montage *[0] montage.jpg

Montage d'une liste de fichiers
Aller chercher tous les fichiers d'un certain type depuis les sous-répertoires, les copier dans un répertoire et en faire une planche contact

# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
find ./ -name '*.png' -exec cp -prv '{}' '/home/emoc/fichiers_a_traiter/' ';'
ls *.png > files.txt
montage @files.txt -geometry 800x800+0+0 -tile 6x6 -background none montage.png

Ajouter une bordure de couleur à une image (source)

# 20200515 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
convert image.png -shave 1x1 -bordercolor black -border 1 image_avec_bordure.png
# mogrify -shave 1x1 -bordercolor black -border 1 -format png *.png # utile pour le faire sur tout un répertoire

Conversion d'un fichier .pdf en une série d'images

# 20200705 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
convert -density 150 fichier.pdf image_%02d.png

Conversion d'une série d'images en pdf

# 20210604 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
# Les images ont une définition identique + attention à l'ordre des arguments : placer les fichiers bitmap avant density et units
convert ./recto.png ./verso.png -density 300 -units pixelsperinch document.pdf

Conversion pdf avec images compressées en jpeg

# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
convert -density 100 -compress jpeg -quality 70% image.jpg document.pdf

Pour convertir toutes les images d'un répertoire, on peut utiliser le joker * :

# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
convert -density 150 -compress jpeg -quality 80% * file.pdf

Réduire la taille d'un fichier pdf
Adapter density et quality selon les besoins

# 20210927 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
convert -density 150 ./original.pdf -compress jpeg -quality 80% reduit.pdf

Créer des fausses pages
Utile pour tester des modèles PAO, la boucle permet de définir le nombre de pages

#!/bin/bash
# 20210913 / ImageMagick 6.9.7-4 Q16 x86_64 20170114 / Debian Stretch 9.5 @ Kirin
for i in $(seq -f "%02g" 1 16)
do
  (convert -background white -fill black -size 877x1240 -gravity center label:"$i" page_"$i".png)
  # version alternative avec un bord noir de 1 pixel
  # (convert -background white -fill black -size 877x1240 -gravity center label:"$i" -shave 1x1 -bordercolor black -border 1 page_"$i".png)
done
  • ressource/logiciel/imagemagick/start.txt
  • Dernière modification: 2021/09/27 14:49
  • par emoc