Imagemagick est un logiciel ultra-puissant qui s'utilise en ligne de commande et qui permet de manipuler quasiment tous les types d'images.
Convertion, redimensionnement, rotation, fusion, animation etc etc ... sont quelques unes des fonctions proposées par Imagemagick.
Pour installer imagemagick :
$ sudo apt-get install imagemagickConvertir une vidéo AVI en GIF animé
$ convert -quiet -delay 1 input.avi  +map  output.gif  Pour convertir une vidéo MOV en GIF animé.
Remplacer le fond blanc d'une image en fond transparent
$ convert test.png -transparent white transparent.pngConvertir un fichier pdf en png avec un fond transparent
$ convert test.pdf -transparent white transparent.pngConvertir une image png en jpg et inversement
$ convert image.png image.jpgConvertir une série d'images png en jpg et inversement
$ for f in *.png; do convert $f $(echo $f | cut -d. -f1).jpg; doneou
$ mogrify -format jpg *.pngModifier le taux de compression pendant la conversion
$ mogrify -quality 90 -format jpg *.pngConvertir une série d'image jpg (ou tout autre format) en gif animé
$ convert *.jpg anime.gifAjouter l'option -delay num pour paramétrer la vitesse d'animation du gif animé.
num est exprimé en 1/100 seconde.
Ajouter l'option -loop num pour paramétrer le nombre de boucle.
Par défaut -loop 0 (infini).
Convertir et redimensionner une image
$ convert image.jpg -resize 50% image.pngou en indiquant une taille en pixel
$ convert -resize 800x600 image.png image.jpgou en indiquant seulement la largeur (maxi) en pixel (le ratio est conservé)
$ convert -resize 800x image.png image.jpgou seulement la hauteur (maxi) en pixel (le ratio est conservé)
$ convert -resize x600 image.png image.jpget toutes les images d'un dossier avec la commande mogrify
$ mogrify -resize 800x600 -format jpg *.pngCréer une icône à partir d'une image
$ convert -colors 256 -resize 16x16 image.jpg icone.icoConvertir une image en niveau de gris
$ convert -type Grayscale image.jpg image.grayscale.jpgLes différents types disponibles
$ convert -list type
Bilevel
ColorSeparation
ColorSeparationAlpha
ColorSeparationMatte
Grayscale
GrayscaleAlpha
GrayscaleMatte
Optimize
Palette
PaletteBilevelAlpha
PaletteBilevelMatte
PaletteAlpha
PaletteMatte
TrueColorAlpha
TrueColorMatte
TrueColorUn exemple de chaque type est disponible ici.
Ajouter une bordure à une image
Une bordure transparente d'1 pixel
$ convert -bordercolor Transparent -border 1x1 image.jpg image-bordure.jpgUne bordure noire de 10 pixels
$ convert -bordercolor black -border 10x10 image.jpg image-bordure.jpgCréer le négatif d'une image
$ convert -negate image.jpg negate.jpgRetourner une image verticalement
$ convert -flip image.jpg flip.jpgUtiliser -flop pour retourner l'image horizontalement.
Pivoter une image vers la droite
$ convert -rotate 90 source.jpg destination.jpgUtiliser -90 pour pivoter l'image vers la gauche.
Ajouter un texte en haut à gauche sur plusieurs images
$ mogrify -fill white -pointsize 16 -annotate +10+26 'Copie Interdite' *.jpg-fill white : couleur du texte
-pointsize 16 : dimension du texte en pixel
-annotate +10+26 : position du texte sur l'image (verticale/horizontale)
Pour la position horizontale du texte, tenir compte de la dimension du texte.
Faire un montage avec plusieurs images
$ montage -background "azure3" *.jpg montage.jpgAvec l'option -geometry, il est possible de modifier la taille des bordures entre chaque image.
La commande suivante ajoute une bordure de 5 pixels entre chaque image
$ montage -geometry +5+5 *.jpg montage.jpgAvec l'option -resize, il est possible de redimensionner les images à assembler.
La commande suivante réduit la taille de chaque image de 80% avant de les assembler.
$ montage -resize 20% *.jpg montage.jpgExtraire une partie d'une image
$ convert image.jpg -crop XxY+L+T newImage.jpgX : Largeur de la nouvelle image
Y : Hauteur de la nouvelle image
L : Point de départ à gauche de l'image d'origine
T : Point de départ du haut de l'image d'origine
Par exemple, dans le schéma ci-dessous, pour extraire l'image B (500x300) de l'image A (800x600) à partir du point L (20 px à partir du bord gauche) et du point T (15 px à partir du bord haut)
$ convert image.jpg -crop 500x300+20+15 newImage.jpgMême traitement mais sur plusieurs images
$ for f in *.png; do convert $f -crop 500x300+20+15 new_$f; doneConvertir des images png (ou autres) en un fichier pdf (avec compression des images en jpeg)
Attention, suite à une faille de sécurité, cette conversion n'est plus possible à moins de modifier un paramètre dans le fichier policy.xml de ImageMagick. Plus d'info ici.
Merci à Sergio pour l'info.
$ convert *.png -compress jpeg monDoc.pdfEt inversement :
$ convert -density 500 monDoc.pdf monDoc.jpgAfficher la liste de toutes les couleurs disponibles
$ convert -list colorGénérer les échantillons de toutes les couleurs gérées par ImageMagick
$ for liste in $(convert -list color | sed '1,5d' | awk '{print $1 "|" $2}'); do couleur=$(cut -d'|' -f1 <<< $liste); code=$(cut -d'|' -f2 <<< $liste); convert -size 50x50 xc:"$code" $couleur.png; doneCet enchainement de commandes permet de générer des images PNG de 50px de toutes les couleurs dans le dossier courant. Tous les fichiers sont nommés par leur nom de couleur.
Exemple des images générées : http://isbeta.fr/4f2fc
Centrer une image dans un calque :
La commande suivante permet de créer un calque transparent d'une taille de 100 x 100 pixels et d'y insérer, au centre, une image proportionnellement redimensionnée à la taille du calque
$ convert img.png -resize 100x100 -size 100x100 xc:none +swap -gravity center -composite new_img.pngPar exemple :
Image d'origine
Image redimensionnée et centrée dans le calque
Réaliser une vidéo à partir d'images
$ convert -delay 25 *.jpg anim.mpg-delay 25 = 25 images par seconde
Afficher les informations d'une image
$ identify image.jpgAvec plus de détail
$ identify -verbose image.jpgCréer une image à partir d'un texte
$ convert -background white -fill black -font "Cretino-Regular" -pointsize 30 -size 200x -gravity Center caption:"Mon texte." "e.gif"
$ display e.gifCréer une image à partir d'un texte contenu dans un fichier
$ cat texte
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed finibus dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque ultrices erat in tempor aliquam. Ut ut facilisis lectus. Sed bibendum pellentesque urna, nec convallis massa.
$ convert -background "rgb(169,169,169)" -fill "rgb(255,255,255)" -font "Abecedario_pautada-Regular" -pointsize 40 -size 480x -gravity Center caption:"$(cat texte)" "d.gif"
$ display d.gifSouvenir d'école
retour sur Centrer une image dans un calque :
Bonjour :)
Je me cassais pas mal la tête avec mogrify et cette page commence à me sauver la mise.
Centrer une image dans un calque est un excellent début ! En revanche, quand je veux mettre une image rectangulaire dans ce carré de 100x100, j'ai des bordures noires en haut et en bas de la vignette finale.
J'ai essayé de mettre -background white en paramètre comme dans l'instruction suivante mais ça ne fonctionne pas.
Pourriez-vous m'aider ?
Bonjour
Logiquement, avec la commande convert, si vous indiquez le paramètre xc:none, le fond devrait être transparent, donc sans aucune bordure noire.
Par exemple, cette commande ...
... va créer un fond transparent (xc:none) d'une dimension de 100x100 (-size 100x100), y insérer au centre (-gravity center) mon image youtube.png d'une dimension de 60x60 (comme indiquée à l'aide de la commande identify) et envoyer tout ça dans un nouveau fichier youtube.new.png
Image d'origine (youtube.png)
Visu de l'image d'origine sous Gimp
Résultat final youtube.new.png (j'ai ajouté une bordure pour montrer le fond transparent)
Visu du résultat final sous Gimp
Avec la visu sous Gimp, on voit bien l'image d'origine centrée dans le calque transparent (l'ensemble de petits carrés gris clairs et gris foncés)
En espérant avoir répondu à votre problème
Merci
Grâce à votre pense-bête j'ai enfin réussi à associer quatre photos en une seule (via la commande montage) et sans bordures (-geometry +0+0 :-)).
Merci pour le compliment.
Merci pour le compliment.
Niveaux de gris
Pour la conversion en niveaux de gris, c'est grayscale (et non pas Greyscale)... 50 shades of Grey est passé par là ;)
Effectivement
Merci pour la remarque.
Je corrige immédiatement.
damier en guise de fond transparent
Bonjour,
Lorsque j'utilise la fonction animate d'ImageMagick pour jouer un gif animé qui possède un fond transparent, celui-ci s'affiche systématiquement dans une fenêtre où le fond transparent est remplacé par un damier ...
Par contre, lorsque j'utilise la fonction display du même ImageMagick, les frames du même gif se succèdent, certes à un rythme très très lent, mais tout à fait correctement sur un fond qui cette fois est bien transparent, sans le damier.
Pourquoi diable cette différence d'affichage des mêmes images selon que l'on utilise display ou animate ?
Je vous remercie beaucoup par avance de votre réponse !
(ma configuration est la suivante: Xubuntu 14.04 et 16.04 (64 bits) avec ImageMagick 6.7.7.10-6ubuntu3.5)
Bonjour,
Bonjour,
C'est étrange car de mon coté, les deux commandes fonctionnent de la même manière.
Quand j'ai une image avec un fond transparent, celui-ci est affiché avec le fameux damier pour indiqué, justement, que l'image possède un fond transparent, que ce soit avec animate ou avec display.
Mais je dirais que l'important, c'est que l'image soit correctement affichée dans un navigateur, par exemple, avec le fameux fond transparent.
Bonsoir,
Bonsoir,
...et tout d'abord, merci beaucoup de cette réponse rapide !
Bon, j'en déduis que, en utilisant "display", je dois déjà m'estimer très heureux que mon gif animé garde son fond transparent !
Ceci dit, avec cette fonction "display", la vitesse de défilement des frames est très lente (1 frame toutes les 3 secondes). Est-il possible d'influer sur cette vitesse pour l'augmenter ?
Ou bien est-elle figée et invariable ?
Merci beaucoup d'avance de votre aide,
Il est possible de modifier
Il est possible de modifier la vitesse d'animation du gif animé avec l'option delay.
>>> Ajouter l'option -delay num pour paramétrer la vitesse d'animation du gif animé.
num est exprimé en 1/100 seconde.
J'ajouterais que la commande display est utilisée uniquement pour vérifier le résultat.
En général, les gifs animés sont utilisés dans des pages web et le fond transparent est correctement géré.
PDF
Pour convertir une suite d'image dans un seul PDF :
convert *.jpg resultat.pdf
...Sauf que :
Un sadique a blacklisté cette conversion, et il faut modifier /etc/ImageMagick-6/policy.xml
voir La doc Ubuntu
Merci beaucoup pour l'info
Merci beaucoup pour l'info