Outils pour utilisateurs

Outils du site


informatique:imagemagick

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:imagemagick [2020/12/02 09:04] – ↷ Liens modifiés en raison d'un déplacement. alexisinformatique:imagemagick [2022/09/18 10:36] (Version actuelle) – [Supprimer les données EXIF d'une image] alexis
Ligne 11: Ligne 11:
 ==== Redimensionner une image en conservant le ratio original ==== ==== Redimensionner une image en conservant le ratio original ====
 Utile, si on ne connait pas l'orientation de la photo originale. Utile, si on ne connait pas l'orientation de la photo originale.
 +<WRAP prewrap>
 <code> <code>
 mogrify -geometry 100x100 climbing.jpg mogrify -geometry 100x100 climbing.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:climbing-100x100.jpg?nolink|Photo redimensionnée}} {{:multimedia:climbing-100x100.jpg?nolink|Photo redimensionnée}}
  
 ==== Générer une mosaïque ==== ==== Générer une mosaïque ====
 +<WRAP prewrap>
 <code> <code>
 montage -tile 3x1 -background transparent -geometry +0+0 climbing.jpg climbing.jpg climbing.jpg tile.jpg montage -tile 3x1 -background transparent -geometry +0+0 climbing.jpg climbing.jpg climbing.jpg tile.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:tile.jpg?nolink|}} {{:multimedia:tile.jpg?nolink|}}
  
 ==== Créer une image dont les dimensions sont fixées en utilisant un maximum de l'image originale ==== ==== Créer une image dont les dimensions sont fixées en utilisant un maximum de l'image originale ====
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -resize 50x100^ -gravity center -extent 50x100 climbing-50x100.jpg convert climbing.jpg -resize 50x100^ -gravity center -extent 50x100 climbing-50x100.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:climbing-50x100.jpg?nolink|}} {{:multimedia:climbing-50x100.jpg?nolink|}}
  
 ==== Extraire une partie de l'image ==== ==== Extraire une partie de l'image ====
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -crop 200x100+50+50 crop.jpg convert climbing.jpg -crop 200x100+50+50 crop.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:crop.jpg?nolink|}} {{:multimedia:crop.jpg?nolink|}}
  
 ==== Ajouter une bordure ==== ==== Ajouter une bordure ====
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -bordercolor violet -border 10x10 border.jpg convert climbing.jpg -bordercolor violet -border 10x10 border.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:border.jpg?nolink|}} {{:multimedia:border.jpg?nolink|}}
  
 ==== Convertir en polaroïd ==== ==== Convertir en polaroïd ====
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -thumbnail 200x200 -bordercolor white -background black +polaroid polaroid.jpg convert climbing.jpg -thumbnail 200x200 -bordercolor white -background black +polaroid polaroid.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:polaroid.jpg?nolink|}} {{:multimedia:polaroid.jpg?nolink|}}
  
 ==== Découper une image pour faire une mosaïque ==== ==== Découper une image pour faire une mosaïque ====
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -crop 3x2@ +repage tile-%d.jpg convert climbing.jpg -crop 3x2@ +repage tile-%d.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:tile-0.jpg?nolink|}} {{:multimedia:tile-0.jpg?nolink|}}
Ligne 68: Ligne 82:
 <WRAP info> <WRAP info>
 Il est possible de d'utiliser des espaces pour extraire une portion de l'image. Ce n'est pas très utile dans le cas de la photo utilisée ici mais cela peut l'être pour extraire les images d'un « [[https://fr.wikipedia.org/wiki/Sprite_(jeu_vid%C3%A9o)|sprite]] » (([[https://stackoverflow.com/questions/9636350/using-imagemagick-how-can-i-slice-up-an-image-into-several-separate-images|bash - Using imagemagick how can i slice up an image into several separate images? - Stack Overflow]])). Il est possible de d'utiliser des espaces pour extraire une portion de l'image. Ce n'est pas très utile dans le cas de la photo utilisée ici mais cela peut l'être pour extraire les images d'un « [[https://fr.wikipedia.org/wiki/Sprite_(jeu_vid%C3%A9o)|sprite]] » (([[https://stackoverflow.com/questions/9636350/using-imagemagick-how-can-i-slice-up-an-image-into-several-separate-images|bash - Using imagemagick how can i slice up an image into several separate images? - Stack Overflow]])).
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -crop 3x2-40-40@ -set filename:index "%[fx:t+6]" +repage tile-%[filename:index].jpg convert climbing.jpg -crop 3x2-40-40@ -set filename:index "%[fx:t+6]" +repage tile-%[filename:index].jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:tile-6.jpg?nolink|}} {{:multimedia:tile-6.jpg?nolink|}}
Ligne 81: Ligne 97:
  
 ==== Appliquer une symétrie ==== ==== Appliquer une symétrie ====
 +<WRAP prewrap>
 <code> <code>
 # Applique une symétrie verticale # Applique une symétrie verticale
Ligne 88: Ligne 105:
 convert climbing.jpg -flop horizontal.flip.jpg convert climbing.jpg -flop horizontal.flip.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:vertical.flip.jpg?nolink|}} {{:multimedia:vertical.flip.jpg?nolink|}}
Ligne 100: Ligne 118:
  
 ==== Ré-orienter une image ==== ==== Ré-orienter une image ====
 +<WRAP prewrap>
 <code> <code>
 # Cré une nouvelle image # Cré une nouvelle image
Ligne 107: Ligne 126:
 mogrify -rotate 90 climbing.jpg mogrify -rotate 90 climbing.jpg
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:rotate.jpg?nolink|}} {{:multimedia:rotate.jpg?nolink|}}
 <WRAP tip> <WRAP tip>
 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 : 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 :
 +<WRAP prewrap>
 <code> <code>
 convert climbing.jpg -background Black -rotate 45 +repage -gravity Center -crop 200x200+0+0 rotate.crop.jpg convert climbing.jpg -background Black -rotate 45 +repage -gravity Center -crop 200x200+0+0 rotate.crop.jpg
 </code> </code>
 +</WRAP>
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
Ligne 129: Ligne 151:
 ==== Ajouter un masque circulaire ==== ==== Ajouter un masque circulaire ====
  
 +<WRAP prewrap>
 <code> <code>
 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 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
 </code> </code>
 +</WRAP>
 <WRAP tip> <WRAP tip>
 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. 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.
 +<WRAP prewrap>
 <code> <code>
 # Génération du masque # Génération du masque
Ligne 141: Ligne 166:
 convert climbing.jpg -gravity Center mask.png -compose CopyOpacity -composite -background Black -alpha remove circle.mask.jpg convert climbing.jpg -gravity Center mask.png -compose CopyOpacity -composite -background Black -alpha remove circle.mask.jpg
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
  
Ligne 149: Ligne 175:
  
 Pour fusionner des images, il faut qu'elles aient de la transparence. Je n'ai pas ((encore)) trouvé comment faire ça en une seule commande, alors il faut passer par des fichiers temporaires. Pour fusionner des images, il faut qu'elles aient de la transparence. Je n'ai pas ((encore)) trouvé comment faire ça en une seule commande, alors il faut passer par des fichiers temporaires.
 +<WRAP prewrap>
 <code bash> <code bash>
 # Ajout de la transparence aux images # Ajout de la transparence aux images
Ligne 157: Ligne 184:
 composite temp1.png temp2.png composite.default.png composite temp1.png temp2.png composite.default.png
 </code> </code>
 +</WRAP>
 Résultat :\\ Résultat :\\
 {{:multimedia:composite.default.png?nolink|}}. {{:multimedia:composite.default.png?nolink|}}.
Ligne 170: Ligne 198:
  
 ==== Créer une image animée ==== ==== Créer une image animée ====
 +<WRAP prewrap>
 <code> <code>
 convert -delay 5 -loop climbing.*.jpg climbing.gif convert -delay 5 -loop climbing.*.jpg climbing.gif
 </code> </code>
 +</WRAP>
  
 Résultat :\\ Résultat :\\
Ligne 178: Ligne 208:
  
 ==== Supprimer le canal alpha ==== ==== Supprimer le canal alpha ====
 +<WRAP prewrap>
 <code> <code>
 mogrify -background white -alpha remove *.png mogrify -background white -alpha remove *.png
 </code> </code>
 +</WRAP>
  
 ==== Dessiner sur une image ==== ==== Dessiner sur une image ====
-Pour mettre à jour la page « [[jeux:videos:playstation|Playstation]] », j'ai du annoter quelques cartes que je ne trouvais plus.+Pour mettre à jour la page [[jeux:videos:playstation:driver_2|Driver 2]], j'ai du annoter quelques cartes que je ne trouvais plus.
  
 Je me suis servi des documents suivants pour produire les images ci-dessous : Je me suis servi des documents suivants pour produire les images ci-dessous :
Ligne 196: Ligne 228:
 {{ jeux:videos:playstation:driver.2:chicago.jpg?200|}} {{ jeux:videos:playstation:driver.2:chicago.jpg?200|}}
 {{ jeux:videos:playstation:driver.2:chicago.original.jpg?200|}} {{ jeux:videos:playstation:driver.2:chicago.original.jpg?200|}}
 +<WRAP prewrap>
 <code bash> <code bash>
 convert chicago.original.jpg -pointsize 20 -draw 'fill black rectangle 258,73 282,102 fill white rectangle 260,75 280,100 fill black text 265,95 "1" fill black rectangle 279,99 285,105' -draw 'fill black rectangle 303,118 327,147 fill white rectangle 305,120 325,145 fill black text 310,140 "2" fill black rectangle 300,115 306,121' chicago.jpg convert chicago.original.jpg -pointsize 20 -draw 'fill black rectangle 258,73 282,102 fill white rectangle 260,75 280,100 fill black text 265,95 "1" fill black rectangle 279,99 285,105' -draw 'fill black rectangle 303,118 327,147 fill white rectangle 305,120 325,145 fill black text 310,140 "2" fill black rectangle 300,115 306,121' chicago.jpg
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
 <WRAP half column> <WRAP half column>
 {{ jeux:videos:playstation:driver.2:havana.jpg?200|}} {{ jeux:videos:playstation:driver.2:havana.jpg?200|}}
 {{ jeux:videos:playstation:driver.2:havana.original.jpg?200|}} {{ jeux:videos:playstation:driver.2:havana.original.jpg?200|}}
 +<WRAP prewrap>
 <code bash> <code bash>
 convert havana.original.jpg -pointsize 20 -draw 'fill black rectangle 90,400 114,429 fill white rectangle 92,402 112,427 fill black text 97,422 "1"' havana.jpg convert havana.original.jpg -pointsize 20 -draw 'fill black rectangle 90,400 114,429 fill white rectangle 92,402 112,427 fill black text 97,422 "1"' havana.jpg
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
 </WRAP> </WRAP>
Ligne 212: Ligne 248:
 {{ jeux:videos:playstation:driver.2:vegas.jpg?200|}} {{ jeux:videos:playstation:driver.2:vegas.jpg?200|}}
 {{ jeux:videos:playstation:driver.2:vegas.original.jpg?200|}} {{ jeux:videos:playstation:driver.2:vegas.original.jpg?200|}}
 +<WRAP prewrap>
 <code bash> <code bash>
 convert vegas.original.jpg -pointsize 20 -draw 'fill black rectangle 446,1163 470,1192 fill white rectangle 448,1165 468,1190 fill black text 453,1185 "1" fill black rectangle 443,1160 449,1166' -draw 'fill black rectangle 378,1022 402,1053 fill white rectangle 380,1024 400,1051 fill black text 385,1044 "2" fill black rectangle 375,1050 381,1056' -draw 'fill black rectangle 179,918 203,947 fill white rectangle 181,920 201,945 fill black text 186,940 "3" fill black rectangle 176,944 182,950' vegas.jpg convert vegas.original.jpg -pointsize 20 -draw 'fill black rectangle 446,1163 470,1192 fill white rectangle 448,1165 468,1190 fill black text 453,1185 "1" fill black rectangle 443,1160 449,1166' -draw 'fill black rectangle 378,1022 402,1053 fill white rectangle 380,1024 400,1051 fill black text 385,1044 "2" fill black rectangle 375,1050 381,1056' -draw 'fill black rectangle 179,918 203,947 fill white rectangle 181,920 201,945 fill black text 186,940 "3" fill black rectangle 176,944 182,950' vegas.jpg
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
 <WRAP half column> <WRAP half column>
 {{ jeux:videos:playstation:driver.2:rio.jpg?200|}} {{ jeux:videos:playstation:driver.2:rio.jpg?200|}}
 {{ jeux:videos:playstation:driver.2:rio.original.jpg?200|}} {{ jeux:videos:playstation:driver.2:rio.original.jpg?200|}}
 +<WRAP prewrap>
 <code bash> <code bash>
 convert rio.original.jpg -pointsize 20 -draw 'fill black rectangle 353,94 377,123 fill white rectangle 355,96 375,121 fill black text 360,116 "1" fill black rectangle 374,120 380,126' -draw 'fill black rectangle 271,760 295,789 fill white rectangle 273,762 293,787 fill black text 278,782 "2" fill black rectangle 292,786 298,792' -draw 'fill black rectangle 114,824 138,853 fill white rectangle 116,826 136,851 fill black text 121,846 "3" fill black rectangle 135,850 141,856' -draw 'fill black rectangle 191,406 215,435 fill white rectangle 193,408 213,433 fill black text 198,428 "4" fill black rectangle 212,432 218,438' rio.jpg convert rio.original.jpg -pointsize 20 -draw 'fill black rectangle 353,94 377,123 fill white rectangle 355,96 375,121 fill black text 360,116 "1" fill black rectangle 374,120 380,126' -draw 'fill black rectangle 271,760 295,789 fill white rectangle 273,762 293,787 fill black text 278,782 "2" fill black rectangle 292,786 298,792' -draw 'fill black rectangle 114,824 138,853 fill white rectangle 116,826 136,851 fill black text 121,846 "3" fill black rectangle 135,850 141,856' -draw 'fill black rectangle 191,406 215,435 fill white rectangle 193,408 213,433 fill black text 198,428 "4" fill black rectangle 212,432 218,438' rio.jpg
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
 </WRAP> </WRAP>
Ligne 231: Ligne 271:
  
 ==== Afficher les caractéristiques d'une image ==== ==== Afficher les caractéristiques d'une image ====
 +<WRAP prewrap>
 <code> <code>
 identify climbing.jpg identify climbing.jpg
 </code> </code>
 +</WRAP>
 Résultat : Résultat :
 +<WRAP prewrap>
 <code> <code>
 climbing.jpg JPEG 300x200 300x200+0+0 8-bit DirectClass 18.8KB 0.000u 0:00.000 climbing.jpg JPEG 300x200 300x200+0+0 8-bit DirectClass 18.8KB 0.000u 0:00.000
 </code> </code>
 +</WRAP>
  
 ==== Écrire dans une image ==== ==== Écrire dans une image ====
 **Le résultat d'une commande** **Le résultat d'une commande**
 +<WRAP prewrap>
 <code> <code>
 convert -border 15x15 -bordercolor "#FFFFFF" label:"$(ls climbing*)" ls.jpg convert -border 15x15 -bordercolor "#FFFFFF" label:"$(ls climbing*)" ls.jpg
 </code> </code>
 +</WRAP>
  
 **Le contenu d'un fichier** **Le contenu d'un fichier**
 +<WRAP prewrap>
 <code> <code>
 convert -fill '#007bc5' -density 200 -font aescrawl.ttf -trim +repage -border 5 -bordercolor white -background white "label:@contact.txt" contact.png convert -fill '#007bc5' -density 200 -font aescrawl.ttf -trim +repage -border 5 -bordercolor white -background white "label:@contact.txt" contact.png
 </code> </code>
 +</WRAP>
  
 **Du texte positionné** **Du texte positionné**
 +<WRAP prewrap>
 <code> <code>
 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 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
 </code> </code>
 +</WRAP>
 ==== Générer un fichier PDF vide ==== ==== Générer un fichier PDF vide ====
  
 +<WRAP prewrap>
 <code bash> <code bash>
 convert xc:none -page A4 a.pdf convert xc:none -page A4 a.pdf
 </code> </code>
 +</WRAP>
 Astuce trouvée [[http://unix.stackexchange.com/a/277987|ici]] Astuce trouvée [[http://unix.stackexchange.com/a/277987|ici]]
 <WRAP important> <WRAP important>
 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. 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 : Pour cela, il faut modifier le fichier ''/etc/ImageMagick-6/policy.xml'' en faisant le changement suivant :
 +<WRAP prewrap>
 <code xml> <code xml>
 <!-- Avant : politique de sécurité appliquée aux fichiers PDF, aucune action autorisée --> <!-- Avant : politique de sécurité appliquée aux fichiers PDF, aucune action autorisée -->
Ligne 271: Ligne 323:
 <policy domain="coder" rights="read|write" pattern="PDF" /> <policy domain="coder" rights="read|write" pattern="PDF" />
 </code> </code>
 +</WRAP>
 </WRAP> </WRAP>
  
 +==== Supprimer les données EXIF d'une image ==== 
 +<WRAP prewrap> 
 +<code> 
 +mogrify -strip climbing.jpg 
 +</code> 
 +</WRAP>
informatique/imagemagick.1606928694.txt.gz · Dernière modification : 2020/12/02 09:04 de alexis