Outils pour utilisateurs

Outils du site


informatique:imagemagick

Ceci est une ancienne révision du document !


ImageMagick

Modification d'images

Sauf indication contraire, pour toutes les manipulations, la photo originale sera la suivante:

Redimensionner une image en conservant le ratio original

Utile, si on ne connait pas l'orientation de la photo originale.

mogrify -geometry 100x100 climbing.jpg

Résultat :
Photo redimensionnée

Générer une mosaïque

montage -tile 3x1 -background transparent -geometry +0+0 climbing.jpg climbing.jpg climbing.jpg tile.jpg

Résultat :

Créer une image dont les dimensions sont fixées en utilisant un maximum de l'image originale

convert climbing.jpg -resize 50x100^ -gravity center -extent 50x100 climbing-50x100.jpg

Résultat :

Extraire une partie de l'image

convert climbing.jpg -crop 200x100+50+50 crop.jpg

Résultat :

Ajouter une bordure

convert climbing.jpg -bordercolor violet -border 10x10 border.jpg

Résultat :

Convertir en polaroïd

convert climbing.jpg -thumbnail 200x200 -bordercolor white -background black +polaroid polaroid.jpg

Résultat :

Découper une image

convert -crop 3x2@ climbing.jpg tile-%d.jpg

Résultat :

Ré-orienter une image

# Cré une nouvelle image
convert -rotate 90 climbing.jpg rotate.jpg

# Modifie l'image
mogrify -rotate 90 climbing.jpg

Résultat :

Pour effectuer plusieurs actions modifiant la taille de l'image, il faut utiliser +repage entre les différentes actions pour avoir le résultat escompté. Par exemple, pour retailler l'image après une rotation :

convert climbing.jpg -background Black -rotate 45 +repage -gravity Center -crop 200x200+0+0 rotate.crop.jpg

Sans +repage :

Avec +repage :

Ajouter un masque circulaire

convert climbing.jpg -gravity Center \( -size 200x200 xc:Black -fill White -draw 'circle 100 100 100 5' -alpha Copy \) -compose CopyOpacity -composite -background Black -alpha remove circle.mask.jpg

Dans le cas où il y a de nombreuses images à manipuler, il est recommandé de créer le masque dans un fichier externe et de l'utiliser dans la commande. Ça évitera de générer le même masque dynamiquement pour chaque image.

# Génération du masque
convert -size 200x200 xc:Black -fill White -draw 'circle 100 100 100 5' -alpha Copy mask.png

# Application du masque
convert climbing.jpg -gravity Center mask.png -compose CopyOpacity -composite -background Black -alpha remove circle.mask.jpg

Résultat :

Créer une image animée

convert -delay 5 -loop climbing.*.jpg climbing.gif

Résultat :

Supprimer le canal alpha

mogrify -background white -alpha remove *.png

Dessiner sur une image

Pour mettre à jour la page « Playstation », j'ai du annoter quelques cartes que je ne trouvais plus.

Je me suis servi des documents suivants pour produire les images ci-dessous :

convert chicago.original.jpg \
  -pointsize 20 \
  -draw 'fill black rectangle 258,73 282,102' \
  -draw 'fill white rectangle 260,75 280,100' \
  -draw 'fill black text 265,95 "1"' \
  -draw 'fill black rectangle 279,99 285,105' \
  -draw 'fill black rectangle 303,118 327,147' \
  -draw 'fill white rectangle 305,120 325,145' \
  -draw 'fill black text 310,140 "2"' \
  -draw 'fill black rectangle 300,115 306,121' \
chicago.jpg

convert havana.original.jpg \
  -pointsize 20 \
  -draw 'fill black rectangle 90,400 114,429' \
  -draw 'fill white rectangle 92,402 112,427' \
  -draw 'fill black text 97,422 "1"' \
havana.jpg

convert vegas.original.jpg \
  -pointsize 20 \
  -draw 'fill black rectangle 446,1163 470,1192' \
  -draw 'fill white rectangle 448,1165 468,1190' \
  -draw 'fill black text 453,1185 "1"' \
  -draw 'fill black rectangle 443,1160 449,1166' \
  -draw 'fill black rectangle 378,1022 402,1053' \
  -draw 'fill white rectangle 380,1024 400,1051' \
  -draw 'fill black text 385,1044 "2"' \
  -draw 'fill black rectangle 375,1050 381,1056' \
  -draw 'fill black rectangle 179,918 203,947' \
  -draw 'fill white rectangle 181,920 201,945' \
  -draw 'fill black text 186,940 "3"' \
  -draw 'fill black rectangle 176,944 182,950' \
vegas.jpg

convert rio.original.jpg \
  -pointsize 20 \
  -draw 'fill black rectangle 353,94 377,123' \
  -draw 'fill white rectangle 355,96 375,121' \
  -draw 'fill black text 360,116 "1"' \
  -draw 'fill black rectangle 374,120 380,126' \
  -draw 'fill black rectangle 271,760 295,789' \
  -draw 'fill white rectangle 273,762 293,787' \
  -draw 'fill black text 278,782 "2"' \
  -draw 'fill black rectangle 292,786 298,792' \
  -draw 'fill black rectangle 114,824 138,853' \
  -draw 'fill white rectangle 116,826 136,851' \
  -draw 'fill black text 121,846 "3"' \
  -draw 'fill black rectangle 135,850 141,856' \
  -draw 'fill black rectangle 191,406 215,435' \
  -draw 'fill white rectangle 193,408 213,433' \
  -draw 'fill black text 198,428 "4"' \
  -draw 'fill black rectangle 212,432 218,438' \
rio.jpg

Pour aller plus loin

Autre

Afficher les caractéristiques d'une image

identify climbing.jpg

Résultat :

climbing.jpg JPEG 300x200 300x200+0+0 8-bit DirectClass 18.8KB 0.000u 0:00.000

Écrire dans une image

Le résultat d'une commande

convert -border 15x15 -bordercolor "#FFFFFF" label:"$(ls climbing*)" ls.jpg

Le contenu d'un fichier

convert -fill '#007bc5' -density 200 -font aescrawl.ttf -trim +repage -border 5 -bordercolor white -background white "label:@contact.txt" contact.png

Du texte positionné

convert -size 200x30 xc:transparent -font /usr/share/fonts/TTF/DejaVuSansMono.ttf -fill black -pointsize 16 -draw "text 0,16 'climbing is fun'" -trim text.png

Générer un fichier PDF vide

convert xc:none -page A4 a.pdf

Astuce trouvée ici

Si la commande retourne l'erreur convert-im6.q16: not authorized `a.pdf' @ error/constitute.c/WriteImage/1037., il faut modifier la politique de sécurité utilisée par ImageMagick. Pour cela, il faut modifier le fichier /etc/ImageMagick-6/policy.xml en faisant le changement suivant :

<!-- Avant : politique de sécurité appliquée aux fichiers PDF, aucune action autorisée -->
<policy domain="coder" rights="none" pattern="PDF" />
 
<!-- Après : politique de sécurité appliquée aux fichiers PDF, lecture et écriture autorisée -->
<policy domain="coder" rights="read|write" pattern="PDF" />
informatique/imagemagick.1597730100.txt.gz · Dernière modification : 2020/08/17 22:55 de alexis