ImageMagick
Les exemples proviennent en grande partie de la fantastique page Examples of ImageMagick Usage.
La documentation officielle d'ImageMagick est disponible en ligne.
Sommaire
- 1 Création d'image
- 2 Deux images -> une image
- 2.1 Background et foreground
- 2.2 background plus petit que le foreground et le tout centré sur l'image
- 2.3 Dissoudre 1 image dans l'autre
- 2.4 Image avec de la transparence par dessus une autre
- 2.5 Coller 2 images ensembles
- 2.6 Création d'une mosaïque avec plusieurs images
- 2.7 Couper deux images en diagonale et les coller
- 3 Édition d'image
- 4 Couleurs
- 5 Charactères
- 6 Ligne de commande
- 7 Divers
- 8 Conversion
Création d'image[modifier]
Image vide[modifier]
convert -size 640x480 xc:color output.png
Image d'une couleur uni[modifier]
convert -size WWxHH xc:'rgb(R,G,B)' output.png
Images aléatoires[modifier]
Avec couleurs:
mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- random.png
Noir et blanc:
mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -threshold 50% -size "${mx}x${my}" RGB:- random.png
Deux images -> une image[modifier]
Background et foreground[modifier]
composite foreground.png background.png output.png
background plus petit que le foreground et le tout centré sur l'image[modifier]
Idéal pour des zoom sur des images lorsque l'une des 2 images est plus petites.
composite -gravity center foreground.png background.png output.png
Dissoudre 1 image dans l'autre[modifier]
composite -dissolve NN% foreground.png background.png output.png
NN% représente le pourcentage qui sera accordé au foreground. Le background aura donc 100%-NN%.
Image avec de la transparence par dessus une autre[modifier]
convert -flatten background.png image_avec_transparence.png output.png
Pour centrer l'image dans l'autre, il faut utiliser l'option repage. Par exemple, si la deuxième image est plus petite que la première et que l'on veut la déplacer de 100 pixels en largeur et de 200 pixels en hauteur, il faudra utiliser la commande
convert -flatten grand_background.png petit_foreground_avec_transparence -repage +100+200 output.png
Coller 2 images ensembles[modifier]
Une en dessous de l'autre[modifier]
convert haut.png bas.png -append output.png
Fonctionne aussi pour plusieurs images
convert haut.png milieu.png bas.png -append output.png
Une à côté de l'autre[modifier]
convert gauche.png droite.png +append output.png
Une par dessus l'autre[modifier]
Cette commande permet du superposer des images. Ne pas confondre avec la commande pour mettre une image en dessus de l'autre.
convert bas.png haut.png -flatten -background None output.png
Pour placer l'image du dessus à un endroit spécifique, il faut utiliser l'option page:
convert bas.png -page +345+330 haut.png -flatten output.png
Création d'une mosaïque avec plusieurs images[modifier]
Images non redimensionnées:
montage -background white -geometry +1+1 *?.jpg big.jpg
Images redimensionnées à 120x120 (par défaut avec -geometry 120x120>+4+3):
montage -background white -geometry 120x120>+4+3 *?.jpg big.jpg
Ne pas redimensionner les images et les coller:
montage -background white -mode concatenate *?.jpg big.jpg
Mettre les images sur 2 lignes et 3 colonnes:
montage -background white -mode concatenate -tile 3x2 *?.jpg big.jpg
Couper deux images en diagonale et les coller[modifier]
Création d'une image noire et blanc de la même dimension que les deux images à couper (exemple: 130x87):
convert -size 130x87 xc:black -fill white -draw "polygon 0,0 0,87 130,0" framemask.png
Couper la première image qui sera en haut à droite:
convert tunisie.png framemask.png -alpha off -compose copy_opacity -composite hautgauche.png
Couper la seconde image qui sera en bas à droite:
convert -respect-parenthesis quebec.png \( framemask.png -negate \) -alpha off -compose copy_opacity -composite basdroit.png
Rassembler les images ensembles:
convert hautgauche.png basdroit.png -compose over -composite tunisie-quebec.png
Édition d'image[modifier]
Prendre un bout d'une image[modifier]
Voir la documentation de l'option crop pour avoir les détails
convert -crop widthxheight+X+Y input.jpg output.jpg
où X,Y représente les coordonnées du coin supérieur gauche de l'image
Prendre une bouchée dans une image[modifier]
composite -compose Dst_Out moule.png pate.png -alpha on test.png
Enlever le haut d'une image[modifier]
convert -shave 0xhauteur_morceau_en_pixels input.png output.png
Prendre le haut d'une image[modifier]
convert -crop 0xhauteur_morceau_en_pixels longue_image.png petite_image.png
Retirer une colonne[modifier]
WIDTH=`identify -format "%w" input.png` HEIGHT=`identify -format "%h" input.png` convert -chop 1x$(($WIDTH-1))+colonne_a_retirer+${HEIGHT} input.png output.png
Faire une rotation à une image[modifier]
Voir l'option rotate.
Faire une rotation de 90 degrés dans le sens horaire:
convert -rotate 90 input.png output.png
Faire une rotation de 90 degrés dans le sens anti-horaire:
convert -rotate -90 input.png output.png
Couper une images en plusieurs morceaux[modifier]
Pour découper une image en M bandes de large et N bandes de haut:
convert -crop MxN image.jpg +repage +adjoin %d.jpg
Image mirroir[modifier]
Mirroir dans la direction verticale:
convert -flip original.png mirroir_vertical.png
Mirroir dans la direction horizontale:
convert -flop original.png mirroir_horizonal.png
Couleurs[modifier]
Les couleurs en arguments peuvent être des noms (white, blue, ...) ou des code hexadécimaux ex:
convert -fill white -opaque "#eeeee6" input.png output.png
Remplacer une couleur par une autre couleur[modifier]
convert -fill nouvelle_couleur -opaque couleur_a_remplacer input.png output.png
Mettre une couleur transparente[modifier]
convert input.png -transparent couleur output.png
Conserver une seule couleur[modifier]
convert input.png -fill couleur_qui_va_faire_tout_le_fond +opaque couleur_a_conserver output.png
Enlever le canal alpha[modifier]
Cette opération changera la couleur transparente en noir:
convert -alpha off input.png output.png
Dans le cas d'un png, pour avoir une autre couleur que noir, il faut suivre deux étapes (source):
convert input_avec_canal_alpha.png -background couleur -alpha Background tmp.png convert tmp.png -alpha off output_avec_canal_alpha_mis_dans_une_autre_couleur.png
Convertir en niveaux de gris[modifier]
Le nombre de couleurs utilisé dans l'exemple (256) est arbitraire.
convert input.jpg -colorspace gray -colors 256 output.jpg
Binarisation d'une image (noir et blanc)[modifier]
convert -monochrome input.png output.png
Charactères[modifier]
Écrire sur une image[modifier]
Sur une image existante:
convert input.jpg -background transparent -fill white -font `locate Ubuntu-B.ttf` \ -pointsize 24 -gravity southeast -annotate 0 'Ma note' output.jpg
Une autre option:
convert input.png -background transparent -fill white -font `locate Ubuntu-B.ttf` \ -pointsize 24 -gravity center label:http://evalweb.cum.qc.ca/ output.png
Font disponible[modifier]
convert -list font
ou
identify -list type
Ligne de commande[modifier]
Mettre les noms de fichier dans une liste en fonction des nombres écrits dans un fichier texte[modifier]
for i in `cat fichier_avec_nombre`;do echo "pathdurepertoire/${i}.jpg" >> liste;done
Faire un composite avec les % indiqués dans les lignes de fichier[modifier]
for i in `seq 1 max_image`;do percent=`head -n $i percent.txt | tail -n 1`; \ j=`printf "%02d" $i` ; \ commande="composite -dissolve $percent foreground.jpg background.jpg $j.jpg"; \ $commande;done
Accélérer le film en diminuant le nombre d'images utilisées[modifier]
for image in `cat image_number.txt`; do echo "00000${image_number}.jpg" >> liste;done
Pour changer l'extension en gif[modifier]
for i in *.jpg; do convert $i $(echo $i | rev | cut -d . -f 2- | rev).gif; done
Divers[modifier]
Enlever l'antialising[modifier]
convert +-antialias operations....
Gif animé[modifier]
Création[modifier]
convert -delay 100 input1.gif input2.gif -loop 0 animation.gif
Pour que le background soit effacé à chaque fois, il faut utiliser l'option -dispose
:
convert -delay 100 input1.gif input2.gif -loop 0 -dispose Background animation.gif
Décomposition[modifier]
convert animation.gif -scene 1 +adjoin frame_%03d.gif
Conversion[modifier]
image -> PDF[modifier]
convert image.jpg fichier.pdf
SVG -> EMF[modifier]
inkscape --file <Input-file> --export-emf <output-file>