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édentes Révision précédente
Prochaine révision
Révision précédente
imagemagick [Le 09/03/2017, 00:34]
176.147.63.19 [Convert]
imagemagick [Le 07/03/2024, 00:13] (Version actuelle)
77.140.254.212 Corrigé commande erronée (Grey --> Gray)
Ligne 8: Ligne 8:
 **ImageMagick** est un logiciel **en ligne de commande** très puissant de manipulation d'​images dans pratiquement tous les formats existants. Il consiste en une suite d'​outils permettant par exemple de changer le format, l'​échelle,​ l'​orientation,​ rajouter une bordure ou du texte, appliquer un filtre, fusionner plusieurs images, animer une suite d'​images,​ etc... **ImageMagick** est un logiciel **en ligne de commande** très puissant de manipulation d'​images dans pratiquement tous les formats existants. Il consiste en une suite d'​outils permettant par exemple de changer le format, l'​échelle,​ l'​orientation,​ rajouter une bordure ou du texte, appliquer un filtre, fusionner plusieurs images, animer une suite d'​images,​ etc...
 Il est possible d'​utiliser ces différents outils dans des programmes écrits en C, C++, Ruby, Python, Perl, etc... Il est possible d'​utiliser ces différents outils dans des programmes écrits en C, C++, Ruby, Python, Perl, etc...
 +
 +<note important>​Depuis 2016 imagemagick est passé à la version 7 qui modifie sensiblement la manière d'​utiliser la bibliothèque,​ toutefois une version 6, intitulée "​legacy"​ reste maintenue (2023) et mise à jour. La présente page se réfère à l'​utilisation d'IM6. La version d'IM présente dans les paquets est une version legacy.</​note>​
  
 ===== Installation ===== ===== Installation =====
Ligne 39: Ligne 41:
  
 **Convert** permet la modification d'une ou plusieurs images, par exemple : **Convert** permet la modification d'une ou plusieurs images, par exemple :
-  * créer une image TGA à partir d'une image JPEG : <​code>​convert image.jpg image.tga</​code>​ +  * créer une image TGA à partir d'une image JPEG : <​code ​bash>convert image.jpg image.tga</​code>​ 
-  * convertir une capture PNG en JPEG **et** la compresser à 20 %. Cela est **fort utile** pour ne pas alourdir inutilement vos demandes d'aide sur le forum : <​code>​convert -quality 20 image.png image.jpg</​code>​ +  * convertir une capture PNG en JPEG **et** la compresser à 20 %. Cela est **fort utile** pour ne pas alourdir inutilement vos demandes d'aide sur le forum : <​code ​bash>convert -quality 20 image.png image.jpg</​code>​ 
-  * créer un fichier GIF animé à partir de plusieurs images PNG : <​code>​convert images_*.png anime.gif</​code>​ +  * créer un fichier GIF animé à partir de plusieurs images PNG : <​code ​bash>convert images_*.png anime.gif</​code>​ 
-<​note>​Cette commande permet la création d'un GIF animé d'​assez bonne qualité à partir de photos JPEG (l'​option ''​-delay''​ permet de spécifier un temps en centièmes de secondes, l'​option ''​-loop 2''​ permet de faire 2 boucles des photos et 0 une lecture en continu) : <​code>​convert -delay 50 -loop 0 *.jpg animation.gif</​code></​note>​ +<​note>​Cette commande permet la création d'un GIF animé d'​assez bonne qualité à partir de photos JPEG (l'​option ''​-delay''​ permet de spécifier un temps en centièmes de secondes, l'​option ''​-loop 2''​ permet de faire 2 boucles des photos et 0 une lecture en continu) : <​code ​bash>convert -delay 50 -loop 0 *.jpg animation.gif</​code></​note
-  * redimensionner en forçant un changement de proportions :​ <​code>​convert test1.jpg -resize 500x1050\! test1b.jpg</​code>​ +  * redimensionner en conservant les proportions (l'une des dimensions de l'​image finale pourra être inférieure aux valeurs passées en paramètre) :​ <code bash>​convert test1.jpg -resize 500x1050 test1b.jpg</​code
-  * créer un document PDF à partir d'une série d'​images png : <​code>​convert -compress jpeg images_*.png document.pdf</​code>​+  * redimensionner en forçant un changement de proportions :​ <​code ​bash>convert test1.jpg -resize 500x1050\! test1b.jpg</​code>​ 
 +  * créer un document PDF à partir d'une série d'​images png : <​code ​bash>convert -compress jpeg images_*.png document.pdf</​code>​
 <​note>​L'​option ''​-compress jpeg''​ force la compression des images au format JPEG plutôt qu'au format MTIF par défaut. Cela a pour effet d'​offrir un fichier PDF nettement plus petit et plus compatible avec Adobe Reader.</​note>​ <​note>​L'​option ''​-compress jpeg''​ force la compression des images au format JPEG plutôt qu'au format MTIF par défaut. Cela a pour effet d'​offrir un fichier PDF nettement plus petit et plus compatible avec Adobe Reader.</​note>​
-  * diminuer les dimensions d'une image tout en effectuant une rotation de 90° dans le sens horaire : <​code>​convert images.jpg -resize 50% -rotate 90 image.jpg</​code>​ +  ​* extraire des images png à partir de chaque page d'un document pdf : <code bash>​convert -density 300 fichier.pdf page%d.png</​code>​ 
-  * tourner les images en fonction de leur orientation donnée dans le format [[wpfr>​EXIF]],​ comme par exemple les images issues d'un appareil photo numérique. L'​image n'est retournée que si elle a été prise en portrait, si elle a été prise en paysage, celle-ci n'est pas modifiée : <​code>​convert image.jpg -auto-orient image_retournee.jpg</​code>​ +  * ou si on ne veut qu'une page du fichier pdf (pour une page de couverture par exemple): 
-  * ajouter un //​copyright//​ (« © Ubuntu » par ex.) ou autre //​watermark//​ sur les photos : des scripts ont déjà été faits, facilitant l'​utilisation des lignes de commandes, en particulier pour l'​ajout d'un //​copyright//​ image transparente : voir dans  [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=301750|ce post de forum]] ​avec [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=1878153#​p1878153|ce script]] de [[http://​forum.ubuntu-fr.org/​profile.php?​id=50612|Fake]] ; +  * <code bash>​convert -density 95 -quality 70 publication.pdf[0] couverture-publication.jpg</​code>​ 
-  ​découper une image selon le principe de l'​emporte-pièce. Les paramètres hauteur et largeur permettent de fixer la hauteur et la largeur de l'​image finale (dans la limite des dimensions de l'​image originale)les paramètres //x// et //y// permettent ​de localiser le coin supérieur gauche de l'​image finale par rapport au coin supérieur gauche de l'​image initiale. Pour découper ​une image de 100 px de hauteur ​et de 50 px de largeur située à 10 px du bord gauche et à 20 px du bord supérieur de « initial.png » : <​code>​convert ​-crop 50x100+10+20 ​ initial.jpg final.jpg</​code>​ + 
-  * découper une image de dimensions ​ 55 × 110 en 18 morceaux10 morceaux de 20 × 20, 2 morceaux de 20 × 10, 5 morceaux de 15 × 20 et 1 morceau de 15 × 10. En effet, si //x// et //y// sont omis, l'​image est intégralement découpée en morceaux de dimensions hauteur×largeur,​ la découpe se faisant de gauche à droite et de haut en bas, à partir du coin supérieur gauche (il est possible de remplacer hauteur×largeur et //x// et //y// par un % de la largeur//x// et //y// peuvent être négatifs, dans ce cas le point de départ de la découpe se fera en dehors de l'​image d'​origine,​ seule la partie correspondant à des pixels de l'​image d'​origine étant restituée). Les parties les plus à droite et les plus en bas peuvent être de dimensions inférieures à la taille de la découpe pour s'​adapter à la dimension de l'​image initiale : <​code>​convert ​-crop 20x20 initial.jpg final.jpg </​code>​ +<note tip>En cas d'​erreur du type : <code bash>​convert-im6.q16:​ attempt to perform an operation not allowed by the security policy `PDF' @ error/​constitute.c/​IsCoderAuthorized/​408. 
-  * transformer un dossier d'​images : <​code>​convert *.BMP -set filename:f '​%t.png'​ +adjoin '​%[filename:​f]'</code>+convert-im6.q16:​ no images defined `page%d.tif':​ Aucun fichier ou dossier de ce type @ error/​blob.c/​OpenBlob/​2874. 
 +convert-im6.q16:​ no images defined `fichier.pdf'​ @ error/​convert.c/​ConvertImageCommand/​3258.</​code>​ne pas hésiter à modifier le fichier policy.xml ainsi qu'​indiqué [[imagemagick#​j_obtiens_une_erreur_dans_la_conversion_en_pdf_et_eps|ci-dessous]]</​note>​ 
 +  ​* diminuer les dimensions d'une image tout en effectuant une rotation de 90° dans le sens horaire : <​code ​bash>convert images.jpg -resize 50% -rotate 90 image.jpg</​code
 +  * modifier la résolution de l'​image : <code bash>​convert -units PixelsPerInch image.JPG -density 300 image.JPG</​code>​ 
 +<note important>​Les dimensions de l'​image ne sont pas modifiées par cette opération, à l'​affichage celle-ci apparaîtra donc plus grande ou plus petite selon les cas.</​note
 +  * tourner les images en fonction de leur orientation donnée dans le format [[wpfr>​EXIF]],​ comme par exemple les images issues d'un appareil photo numérique. L'​image n'est retournée que si elle a été prise en portrait, si elle a été prise en paysage, celle-ci n'est pas modifiée : <​code ​bash>convert image.jpg -auto-orient image_retournee.jpg</​code>​  
 +<note tip> 
 +Cette option est quasi-indispensable ​avec les images verticales dont on compte supprimer (option **-strip**) ensuite ​les exifs et commentaires. Faute de quoi, une même image sera affichée verticalement ou horizontalement selon les __visionneuses__ ​et - auteurs ​de blogssongez-! - selon les __navigateurs__. 
 +<​code ​bash> 
 +convert ​image.jpg -auto-orient -strip image_retournee.jpg 
 +</​code>​ 
 +L'ordre des options importe ! 
 +</note>
  
 +  * améliorer le contraste (//​expansion d'​histogramme//​):​ selon la luminosité lors de la prise d'​image,​ celle-ci peut ne pas utiliser tous les niveaux disponibles,​ que ce soit dans les tons clairs comme dans les tons sombres, pour améliorer à minima cela, lancez : <code bash>​convert image-source-peu-contrasté.jpg -auto-level image-dest-mieux-contrasté.jpg</​code>​
 +  * ajouter un //​copyright//​ (« © Ubuntu » par ex.) ou autre //​watermark//​ sur les photos : des scripts ont déjà été faits, facilitant l'​utilisation des lignes de commandes, en particulier pour l'​ajout d'un //​copyright//​ image transparente : voir dans  [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=301750|ce post de forum]] avec [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=1878153#​p1878153|ce script]] de [[http://​forum.ubuntu-fr.org/​profile.php?​id=50612|Fake]] ;
 +  * découper une image comme avec un emporte-pièce. Les paramètres largeur et hauteur servent à fixer la largeur et la hauteur de l'​image finale (dans la limite des dimensions de l'​image originale), les paramètres //x// et //y// servent à localiser le coin supérieur gauche de l'​image finale par rapport au coin supérieur gauche de l'​image initiale. Pour découper une image de 50 px de largeur et de 100 px de hauteur, située à 10 px du bord gauche et à 20 px du bord supérieur de « initial.png » : <code bash>​convert -crop 50x100+10+20 ​ initial.png ​ final.jpg</​code>​
 +  * découper une image de dimensions ​ 55 × 110 en 18 morceaux, 10 morceaux de 20 × 20, 2 morceaux de 20 × 10, 5 morceaux de 15 × 20 et 1 morceau de 15 × 10. En effet, si //x// et //y// sont omis, l'​image est intégralement découpée en morceaux de dimensions hauteur×largeur,​ la découpe se faisant de gauche à droite et de haut en bas, à partir du coin supérieur gauche (il est possible de remplacer hauteur×largeur et //x// et //y// par un % de la largeur. //x// et //y// peuvent être négatifs, dans ce cas le point de départ de la découpe se fera en dehors de l'​image d'​origine,​ seule la partie correspondant à des pixels de l'​image d'​origine étant restituée). Les parties les plus à droite et les plus en bas peuvent être de dimensions inférieures à la taille de la découpe pour s'​adapter à la dimension de l'​image initiale : <code bash>​convert -crop 20x20 initial.jpg final.jpg </​code>​
 +  * convertir une image couleur en niveau de gris : <code bash>​convert -colorspace Gray initial.jpg final.jpg</​code>​
 +  * transformer un dossier d'​images : <code bash>​convert *.BMP -set filename:f '​%t.png'​ +adjoin '​%[filename:​f]'</​code>​
 +  * créer une image unie (par exemple pour y superposer des images de dimensions différentes) : <code bash>​convert -size 2450x4780 xc:blue image.png</​code>​
 +  * créer une image transparente (par exemple pour y coller d'​autres éléments) : <code bash>​convert -size 840x600 xc:none image-transp.png</​code>​
 ==== Mogrify ==== ==== Mogrify ====
  
Ligne 70: Ligne 93:
  
   mogrify -resize 800x600 -path /​autre_repertoire *.jpg   mogrify -resize 800x600 -path /​autre_repertoire *.jpg
 +
 +Ou encore, conversion de gif en jpg dans le même répertoire :​
 +
 +  mogrify -format jpg *.gif
  
 Ou encore, conversion et changement de proportions :​ Ou encore, conversion et changement de proportions :​
  
   mogrify *.png -resize 500x1050\! -path /​autre_repertoire ​ *.jpg   mogrify *.png -resize 500x1050\! -path /​autre_repertoire ​ *.jpg
 +  ​
 Ce dernier traitement par lot est particulièrement utile pour corriger en un clin d'oeil des captures d'​écran si, par exemple, la numérisation de vos cassettes VHS n'a pas respecté les proportions originelles. Ce dernier traitement par lot est particulièrement utile pour corriger en un clin d'oeil des captures d'​écran si, par exemple, la numérisation de vos cassettes VHS n'a pas respecté les proportions originelles.
  
 ==== Identify ==== ==== Identify ====
  
-**Identify** donne des informations sur l'​image. ​+**Identify** donne des informations sur l'​image.
   * Pour des informations sommaires : <​code>​identify image.jpg</​code>​   * Pour des informations sommaires : <​code>​identify image.jpg</​code>​
   * Pour des informations complètes : <​code>​identify -verbose image.jpg</​code>​   * Pour des informations complètes : <​code>​identify -verbose image.jpg</​code>​
Ligne 120: Ligne 147:
   import -window root -crop 800x600 image.png   import -window root -crop 800x600 image.png
  
-Sélectionner une zone de 800×600 pixels en partant du point situé 150 pixels ​à plus à droite et 100 pixels plus bas que le coin supérieur gauche de l'​écran :+Sélectionner une zone de 800×600 pixels en partant du point situé 150 pixels plus à droite et 100 pixels plus bas que le coin supérieur gauche de l'​écran :
   import -window root -crop 800x600+150+100 image.png   import -window root -crop 800x600+150+100 image.png
   ​   ​
Ligne 126: Ligne 153:
 [[man>​import|Le manuel]] pour plus d'​information. [[man>​import|Le manuel]] pour plus d'​information.
  
-==== Animate ==== +==== Animate ====
  
 **Animate** permet la visualisation d'​animations. **Animate** permet la visualisation d'​animations.
Ligne 132: Ligne 159:
   * Pour animer une série de photos à raison d'une par seconde : <​code>​animate -delay 100 *.png </​code>​   * Pour animer une série de photos à raison d'une par seconde : <​code>​animate -delay 100 *.png </​code>​
  
-==== Compare ==== +==== Compare ====
  
 **Compare** crée, à partir de 2 images, une troisième qui représente la différence entre les 2 premières. Utile pour savoir où ont été opérées des modifications : **Compare** crée, à partir de 2 images, une troisième qui représente la différence entre les 2 premières. Utile pour savoir où ont été opérées des modifications :
Ligne 142: Ligne 169:
 Pour faire se chevaucher ou mélanger des images. Pour faire se chevaucher ou mélanger des images.
  
-Il semblerait que la superposition puisse se faire avec tout une palette d'​effets (transparence,​ etc ...) qui restent à expliciter. Composite permet, par exemple, d'​ajouter une signature qui peut être elle même une image (si elle est transparente,​ la superposition le sera également). Il est également possible d'​écrire directement sur une image //via// "​annotate"​ mais avec une image personnalisée c'est plus joli.+Il semblerait que la superposition puisse se faire avec toute une palette d'​effets (transparence,​ etc ...) qui restent à expliciter. Composite permet, par exemple, d'​ajouter une signature qui peut être elle-même une image (si elle est transparente,​ la superposition le sera également). Il est également possible d'​écrire directement sur une image //via// "​annotate"​ mais avec une image personnalisée c'est plus joli.
  
     * ''​-compose''​ : Permet de définir la composition de l'​image finale, c'est à dire position des deux images l'une par rapport à l'​autre et le mode de superposition ;     * ''​-compose''​ : Permet de définir la composition de l'​image finale, c'est à dire position des deux images l'une par rapport à l'​autre et le mode de superposition ;
Ligne 193: Ligne 220:
 == -compose == == -compose ==
  
-Permet de définir la composition de l'​image,​ c'est à dire la manière ​dont la superposition ​s'​effectue. Plusieurs méthodes sont possibles (schémas visibles [[http://​www.imagemagick.org/​Usage/​compose/#​duff-porter|ici]]) :+Permet de définir la composition de l'​image,​ c'est à dire la manière ​d'​effectuer ​la superposition. Plusieurs méthodes sont possibles (schémas visibles [[http://​www.imagemagick.org/​Usage/​compose/#​duff-porter|ici]]) :
  
 **Méthodes de superposition :** **Méthodes de superposition :**
Ligne 200: Ligne 227:
   - Dst_over : la première image s'​affiche sous la seconde (dans l'​ordre du script) mais la taille de l'​image résultante est celle de la seconde image (c'est à dire l'​image inférieure) ;   - Dst_over : la première image s'​affiche sous la seconde (dans l'​ordre du script) mais la taille de l'​image résultante est celle de la seconde image (c'est à dire l'​image inférieure) ;
   - Src : L'​image "du dessous"​ est recouverte par l'​image "du dessus"​ MAIS toutes les meta-données de l'​image résultante seront celles de l'​image inférieure et la taille de l'​image finale sera celle de l'​image inférieure. Si l'​image de recouvrement (supérieure) est de taille inférieure à l'​image "du dessous",​ le reste de l'​image "du dessous"​ sera soit transparent (si l'​image "du dessous"​ dispose d'un canal alpha), soit noir ;   - Src : L'​image "du dessous"​ est recouverte par l'​image "du dessus"​ MAIS toutes les meta-données de l'​image résultante seront celles de l'​image inférieure et la taille de l'​image finale sera celle de l'​image inférieure. Si l'​image de recouvrement (supérieure) est de taille inférieure à l'​image "du dessous",​ le reste de l'​image "du dessous"​ sera soit transparent (si l'​image "du dessous"​ dispose d'un canal alpha), soit noir ;
-  - Copy : Même résultat que Src sauf pour la partie de l'​image de fond ("du dessous"​) qui "​dépasserait"​ autour de l'​image supérieure : l'​image de fond apparait ​sous l'​image du dessus si elle est de taille supérieure. L'​effet est équivalent à celui de "​Over"​ sauf si l'​image supérieure dispose d'une zone transparente : l'​image finale sera transparente à cet endroit (alors qu'​avec "​Over"​ l'​image inférieure apparaîtrait dans la zone transparente) ;+  - Copy : Même résultat que Src sauf pour la partie de l'​image de fond ("du dessous"​) qui "​dépasserait"​ autour de l'​image supérieure : l'​image de fond apparaît ​sous l'​image du dessus si elle est de taille supérieure. L'​effet est équivalent à celui de "​Over"​ sauf si l'​image supérieure dispose d'une zone transparente : l'​image finale sera transparente à cet endroit (alors qu'​avec "​Over"​ l'​image inférieure apparaîtrait dans la zone transparente) ;
   - Dst_in : l'​image supérieure est utilisée comme masque pour l'​image inférieure : seule la partie de l'​image inférieure qui serait recouverte par l'​image du dessus apparaît dans l'​image finale, mais c'est bien le motif de l'​image inférieure qui est affiché. Le reste de la surface de l'​image finale est transparente. L'​image supérieure est utilisée comme un emporte-pièce. L'​image supérieure ne doit pas être une image en nuances de gris car c'est son canal alpha qui est utilisé par imagemagick ;   - Dst_in : l'​image supérieure est utilisée comme masque pour l'​image inférieure : seule la partie de l'​image inférieure qui serait recouverte par l'​image du dessus apparaît dans l'​image finale, mais c'est bien le motif de l'​image inférieure qui est affiché. Le reste de la surface de l'​image finale est transparente. L'​image supérieure est utilisée comme un emporte-pièce. L'​image supérieure ne doit pas être une image en nuances de gris car c'est son canal alpha qui est utilisé par imagemagick ;
   - Dst Out : cette commande est complémentaire de la précédente. L'​image finale est analogue à l'​image inférieure,​ le motif de l'​image supérieure apparaissant comme une zone transparente. En reprenant l'​image d'un emporte-pièce Dst_in représente la partie enlevée et Dst_out la partie "qui reste",​ la partie enlevée laissant un "​trou"​ transparent. En superposant les deux images (elles ont toutes deux les dimensions exactes de l'​image inférieure d'​origine),​ on retrouve l'​image inférieure d'​origine.   - Dst Out : cette commande est complémentaire de la précédente. L'​image finale est analogue à l'​image inférieure,​ le motif de l'​image supérieure apparaissant comme une zone transparente. En reprenant l'​image d'un emporte-pièce Dst_in représente la partie enlevée et Dst_out la partie "qui reste",​ la partie enlevée laissant un "​trou"​ transparent. En superposant les deux images (elles ont toutes deux les dimensions exactes de l'​image inférieure d'​origine),​ on retrouve l'​image inférieure d'​origine.
   - ATop : cette commande est équivalente à "​Over"​ si l'​image de fond est totalement opaque. Si l'​image de fond ("du dessous"​) comporte des zones transparentes,​ celles-ci demeurent transparentes dans l'​image finale, seules les parties opaques situées sous l'​image supérieure "du dessus"​ sont recouvertes ;   - ATop : cette commande est équivalente à "​Over"​ si l'​image de fond est totalement opaque. Si l'​image de fond ("du dessous"​) comporte des zones transparentes,​ celles-ci demeurent transparentes dans l'​image finale, seules les parties opaques situées sous l'​image supérieure "du dessus"​ sont recouvertes ;
   - Dst ATop : cette commande va superposer sur la première image les parties non transparentes de la seconde, l'​image finale ;   - Dst ATop : cette commande va superposer sur la première image les parties non transparentes de la seconde, l'​image finale ;
-  - Xor : rend transparente ​les zones colorées des deux images superposées. L'​image finale comportera les zones de transparence communes aux deux images (l'une sous l'​autre),​ les zones opaques des deux images qui correspondent à une zone transparente sur l'​autre image et des zones transparente ​dans les zones qui sont opaques dans les deux images ; +  - Xor : rend transparentes ​les zones colorées des deux images superposées. L'​image finale comportera les zones de transparence communes aux deux images (l'une sous l'​autre),​ les zones opaques des deux images qui correspondent à une zone transparente sur l'​autre image et des zones transparentes ​dans les zones qui sont opaques dans les deux images ; 
-  - Clear : cette commande se contente d'​effacer les couleurs de l'​image "du dessous"​ et ne prend pas en compte l'​image supérieure. C'est un outil pour la création de canevas transparents ou noirs dans les scripts complexes. Si le canal alpha est clôt, l'​image créée sera noire. L'​option spéciale "​compose:​outside-overlay"​ limite l'​effacement à la surface de l'​image "du dessus"​ (équivalent de "​Dst_out"​ pour une image supérieure ne comportant aucune zone de transparence ;+  - Clear : cette commande se contente d'​effacer les couleurs de l'​image "du dessous"​ et ne prend pas en compte l'​image supérieure. C'est un outil pour la création de canevas transparents ou noirs dans les scripts complexes. Si le canal alpha est clos, l'​image créée sera noire. L'​option spéciale "​compose:​outside-overlay"​ limite l'​effacement à la surface de l'​image "du dessus"​ (équivalent de "​Dst_out"​ pour une image supérieure ne comportant aucune zone de transparence ;
   - Dst : cette commande ne fait rien du tout. Elle est utile dans les scripts complexes pour annuler facilement une composition transparente.   - Dst : cette commande ne fait rien du tout. Elle est utile dans les scripts complexes pour annuler facilement une composition transparente.
  
Ligne 216: Ligne 243:
   - Screen : équivalent de Multiply mais les images sont passées en négatif avant traitement puis le résultat est lui-même passé en négatif. Si l'une des deux images est en noir pur, le résultat sera équivalent à l'​autre image ;   - Screen : équivalent de Multiply mais les images sont passées en négatif avant traitement puis le résultat est lui-même passé en négatif. Si l'une des deux images est en noir pur, le résultat sera équivalent à l'​autre image ;
   - Bumpmap (multiplication des nuances de gris) : l'​opération va assombrir la seconde image dans toutes les zones où la première est sombre ;   - Bumpmap (multiplication des nuances de gris) : l'​opération va assombrir la seconde image dans toutes les zones où la première est sombre ;
-  - Divide - division: l'​opération va éclaircir la seconde image dans toutes les zones où la première est sombre ; +  - Divide - division : l'​opération va éclaircir la seconde image dans toutes les zones où la première est sombre ; 
-  - Plus - addition : addition des couleurs, les couleurs ​de mélangent. Des résultats inattendus peuvent se produire si la somme mathématique de la valeur des couleurs est supérieure à la valeur maximale admise. La couleur résultante sera donc blanche (valeur 1). L'​opérateur additionne aussi la valeur du canal alpha (c'est le seul à le faire) ;+  - Plus - addition : addition des couleurs, les couleurs ​se mélangent. Des résultats inattendus peuvent se produire si la somme mathématique de la valeur des couleurs est supérieure à la valeur maximale admise. La couleur résultante sera donc blanche (valeur 1). L'​opérateur additionne aussi la valeur du canal alpha (c'est le seul à le faire) ;
   - ModulusAdd : équivalent à Plus sauf en cas de dépassement de la valeur maximale admise, les pixels seront noirs et non blancs ;   - ModulusAdd : équivalent à Plus sauf en cas de dépassement de la valeur maximale admise, les pixels seront noirs et non blancs ;
   - Minus : soustraction d'une image à l'​autre. Les valeurs négatives seront noires (0) ;   - Minus : soustraction d'une image à l'​autre. Les valeurs négatives seront noires (0) ;
Ligne 223: Ligne 250:
   - Difference : l'​image résultante correspond à la différence absolue des valeurs des couleurs. La soustraction de blanc au noir produira du blanc alors que la soustraction de couleurs identiques donnera du noir. Cette commande permet de comparer deux images et de calculer un ratio de différences ;   - Difference : l'​image résultante correspond à la différence absolue des valeurs des couleurs. La soustraction de blanc au noir produira du blanc alors que la soustraction de couleurs identiques donnera du noir. Cette commande permet de comparer deux images et de calculer un ratio de différences ;
   - Exclusion (Soustraction d'​images sauf les gris - la formule de calcul est la suivante : Dessus + Dessous - 2*Dessus*Dessous). Blanc - blanc donnera du noir, noir - noir aussi, gris - gris du gris, blanc - noir donnera du blanc. Les zones seront d'​autant plus claires que le gradient entre les deux images sera élevé ;   - Exclusion (Soustraction d'​images sauf les gris - la formule de calcul est la suivante : Dessus + Dessous - 2*Dessus*Dessous). Blanc - blanc donnera du noir, noir - noir aussi, gris - gris du gris, blanc - noir donnera du blanc. Les zones seront d'​autant plus claires que le gradient entre les deux images sera élevé ;
-  - Lighten (sélection des couleurs plus claires) : Les zones les plus claires des deux images sont sélectionnées (si première > seconde alors première sinon seconde) ​+  - Lighten (sélection des couleurs plus claires) : les zones les plus claires des deux images sont sélectionnées (si première > seconde alors première sinon seconde) ​
   - Darken : inverse de Lighten. ​   - Darken : inverse de Lighten. ​
  
 **Méthodes agissant sur la luminosité :** **Méthodes agissant sur la luminosité :**
  
-  - Overlay (ajout de couleurs à une image en nuances de gris) : Méthode ​composite d'​assombrissement (Multiply) et d'​éclaircissement (ligthten). Préserve le blanc et le noir purs de l'​image de fond et tinte les gris à partir des couleurs de l'​image "du dessus"​ (Formule : If dessous <= 0.5 then (2*dessus*dessous) else (1-2*(1-dessus)*(1-dessous)) ; +  - Overlay (ajout de couleurs à une image en nuances de gris) : méthode ​composite d'​assombrissement (Multiply) et d'​éclaircissement (ligthten). Préserve le blanc et le noir purs de l'​image de fond et teinte ​les gris à partir des couleurs de l'​image "du dessus"​ (Formule : If dessous <= 0.5 then (2*dessus*dessous) else (1-2*(1-dessus)*(1-dessous)) ; 
-  - Hard_Light : équivalent de Overlay avec inversion des première et seconde ​image ;+  - Hard_Light : équivalent de Overlay avec inversion des première et seconde ​images ​;
   - Soft Light : le traitement est équivalent à Hard Light mais les gradients sont réduits, de fait le résultat est plus proche de Overlay ;   - Soft Light : le traitement est équivalent à Hard Light mais les gradients sont réduits, de fait le résultat est plus proche de Overlay ;
   - Pegtop_Light : très proche de Soft Light, la formule est encore adoucie et le traitement plus aisé ;   - Pegtop_Light : très proche de Soft Light, la formule est encore adoucie et le traitement plus aisé ;
   - Pin_Light : destiné à mieux préserver les demi-teintes,​ les valeurs les plus sombres et les plus claires sont restreintes. Le résultat est moins lissé ;   - Pin_Light : destiné à mieux préserver les demi-teintes,​ les valeurs les plus sombres et les plus claires sont restreintes. Le résultat est moins lissé ;
-  - Linear_Light : Méthode ​de fusion simple qui produit davantage de blancs et de noirs purs. La formule est : (2*Première + Deuxième) - 1 ;+  - Linear_Light : méthode ​de fusion simple qui produit davantage de blancs et de noirs purs. La formule est : (2*Première + Deuxième) - 1 ;
   - Vivid_Light (même méthode que Photoshop 7). Refinement mineur de Linear_light. Limite les valeurs extrêmes. Formule :If Première <= 0.5 then 1-Deuxième)/​(2*Première) else Deuxième/​(2*(1-Première)) ;   - Vivid_Light (même méthode que Photoshop 7). Refinement mineur de Linear_light. Limite les valeurs extrêmes. Formule :If Première <= 0.5 then 1-Deuxième)/​(2*Première) else Deuxième/​(2*(1-Première)) ;
   - Linear_Dodge (Photoshop '​Add'​ Compose). Proche de Plus pour les images opaques, différent pour les images semi-transparentes. Formule : Première + Deuxième ;   - Linear_Dodge (Photoshop '​Add'​ Compose). Proche de Plus pour les images opaques, différent pour les images semi-transparentes. Formule : Première + Deuxième ;
-  - Linear_Burn (Photoshop '​Subtract'​ method). ​Equivalent ​au passage en négatif des deux images avant Lienar-Dodge puis à nouveau passage en négatif de l'​image résultante. Formule : Première + Deuxième - 1 ; +  - Linear_Burn (Photoshop '​Subtract'​ method). ​Équivalent ​au passage en négatif des deux images avant Lienar-Dodge puis à nouveau passage en négatif de l'​image résultante. Formule : Première + Deuxième - 1 ; 
-  - Color_Dodge (protection de l'​exposition à la lumière). L'​image "du dessus"​ va "​protéger"​ l'​image "du dessous"​ de la lumière. La superposition d'une image en blanc pur va "​blanchir"​ toute l'​image du dessous, une imange ​en noir pur sera sans effet. Formule : Deuxième / (1-Première) ;+  - Color_Dodge (protection de l'​exposition à la lumière). L'​image "du dessus"​ va "​protéger"​ l'​image "du dessous"​ de la lumière. La superposition d'une image en blanc pur va "​blanchir"​ toute l'​image du dessous, une image en noir pur sera sans effet. Formule : Deuxième / (1-Première) ;
   - Color_Burn : effet inverse de Color_dodge. Les couleurs de l'​image du dessous situées sous les parties claires de l'​image du dessus seront protégées,​ les parties situées sous les zones sombres seront assombries. Formule : 1 - ( (1-Deuxième) / Première).   - Color_Burn : effet inverse de Color_dodge. Les couleurs de l'​image du dessous situées sous les parties claires de l'​image du dessus seront protégées,​ les parties situées sous les zones sombres seront assombries. Formule : 1 - ( (1-Deuxième) / Première).
  
 **Méthodes de copie de canaux :** **Méthodes de copie de canaux :**
  
-Ces méthodes assurent le transfert des information ​d'​un ​cannal ​d'une image vers celui d'une autre image ; +Ces méthodes assurent le transfert des informations ​d'​un ​canal d'une image vers celui d'une autre image ; 
-  - Copy_Opacity (fixer la transparence à partir du masque en nuances de gris) : Quand la première image n'a pas de canal alpha, l'​opérateur va remplacer le canal alpha de la seconde image avec le canal des nuances de gris de la première. Tout ce qui est noir dans la première image sera transparent,​ tout ce qui est blanc opaque ; +  - Copy_Opacity (fixer la transparence à partir du masque en nuances de gris) : quand la première image n'a pas de canal alpha, l'​opérateur va remplacer le canal alpha de la seconde image avec le canal des nuances de gris de la première. Tout ce qui est noir dans la première image sera transparent,​ tout ce qui est blanc opaque ; 
-  - Copy_Red, Copy_Green, Copy_Blue : Copie du canal de couleur sélectionné de la première image dans la seconde - Équivalent aux méthodes précédentes ; +  - Copy_Red, Copy_Green, Copy_Blue : copie du canal de couleur sélectionné de la première image dans la seconde - Équivalent aux méthodes précédentes ; 
-  - Copy_Black : Copie du canal noir quand il existe (images CMYK), aucun effet sinon ;+  - Copy_Black : copie du canal noir quand il existe (images CMYK), aucun effet sinon ;
   - Hue (copie de la nuance d'une image RGB) : Réservé aux images RGB à espace de couleur. Les valeurs de saturation S et de luminance L (ou Y?)  de la seconde image ne sont pas modifiées ;   - Hue (copie de la nuance d'une image RGB) : Réservé aux images RGB à espace de couleur. Les valeurs de saturation S et de luminance L (ou Y?)  de la seconde image ne sont pas modifiées ;
-  - Saturate : Copie de la Saturation ​S sans modification des valeurs des nuances de couleur hue H et de la luminance L (ou Y?); +  - Saturate : copie de la saturation ​S sans modification des valeurs des nuances de couleur hue H et de la luminance L (ou Y?); 
-  - Luminize copie de la luminance d'une image RGB sans modification des valeurs des nuances de couleur hue H et de la saturation S. +  - Luminize ​copie de la luminance d'une image RGB sans modification des valeurs des nuances de couleur hue H et de la saturation S. 
-  - Colorize copie de la nuance d'une image RGB et de la de la Saturation ​S, la luminance L (ou Y?) de la seconde image n'est pas modifiée.+  - Colorize ​copie de la nuance d'une image RGB et de la saturation ​S, la luminance L (ou Y?) de la seconde image n'est pas modifiée.
  
 == -dissolve == == -dissolve ==
  
-Dissolution d'une image dans l'​autre. Cette méthode effectue une superposition contrôlée de la première image sur la seconde, en ajustant la transparence de la première sur la seconde. Il est également possible d'​organiser la dissolution progressive de la seconde image (valeurs de transparence de 100 % à 200 %). Syntaxe : +Dissolution d'une image dans l'​autre. Cette méthode effectue une superposition contrôlée de la première image sur la seconde, en ajustant la transparence de la première sur la seconde. Il est également possible d'​organiser la dissolution progressive de la seconde image (valeurs de transparence de 100 % à 200 %). Syntaxe :
  
   composite -dissolve pourcentage Première Deuxième Image_résultante   composite -dissolve pourcentage Première Deuxième Image_résultante
Ligne 269: Ligne 296:
 == -watermark ("​modulate"​ compose method) == == -watermark ("​modulate"​ compose method) ==
  
-Dégradation d'​image et l'aposition ​d'un filigrane pour protéger le copyright. Syntaxe : +Dégradation d'​image et l'apposition ​d'un filigrane pour protéger le copyright. Syntaxe :
  
   composite -watermark valeur_luminosité[xvaleur_saturation] Première ​ Deuxième ​ image_resultante   composite -watermark valeur_luminosité[xvaleur_saturation] Première ​ Deuxième ​ image_resultante
Ligne 277: Ligne 304:
 == -composite == == -composite ==
  
-Utilisation d'un masque pour limiter la superposition d'une image sur une autre. Le masque de composition permet d'​utiliser une troisième image qui va limiter la zone affectée par une superposition de la première image sur la secone. La taille de l'​image finale résultante sera celle de la seconde image. Les zones transparentes du masque ne seront pas prises en compte, les zones noires "​protègeront"​ la seconde image, les zones blanches seront affectées par l'​opération de superposition effectuée avec la première image.+Utilisation d'un masque pour limiter la superposition d'une image sur une autre. Le masque de composition permet d'​utiliser une troisième image qui va limiter la zone affectée par une superposition de la première image sur la seconde. La taille de l'​image finale résultante sera celle de la seconde image. Les zones transparentes du masque ne seront pas prises en compte, les zones noires "​protègeront"​ la seconde image, les zones blanches seront affectées par l'​opération de superposition effectuée avec la première image.
  
 == -tile == == -tile ==
  
 La première image est reproduite comme un motif en plusieurs exemplaires de manière à couvrir la deuxième image. La première image est reproduite comme un motif en plusieurs exemplaires de manière à couvrir la deuxième image.
-Syntaxe : +Syntaxe :
  
   composite ​ -tile star.gif ​  ​netscape: ​  ​tile.gif   composite ​ -tile star.gif ​  ​netscape: ​  ​tile.gif
Ligne 291: Ligne 318:
  
 Utilisation de 4 valeurs numériques pour appliquer des traitements numériques à la carte. (Formule : A*Première*Deuxième + B*Première + C*Deuxième + D) Utilisation de 4 valeurs numériques pour appliquer des traitements numériques à la carte. (Formule : A*Première*Deuxième + B*Première + C*Deuxième + D)
-Syntaxe : +Syntaxe :
  
    '​-compose Mathematics -set option:​compose:​args -1,1,1,0 -composite image_résultante.png    '​-compose Mathematics -set option:​compose:​args -1,1,1,0 -composite image_résultante.png
Ligne 303: Ligne 330:
     Linear_Light 0,​2,​1,​-1     Linear_Light 0,​2,​1,​-1
  
-= Change_Mask = += Change_Mask =
  
 Rend transparents certains pixels de l'​image résultante finale en fonction de la valeur du Fuzz Factor. Utile pour reconstruire la transparence d'une image qui a recouvert un arrière-plan complexe suffisamment différent pour que la fonction puisse agir. Rend transparents certains pixels de l'​image résultante finale en fonction de la valeur du Fuzz Factor. Utile pour reconstruire la transparence d'une image qui a recouvert un arrière-plan complexe suffisamment différent pour que la fonction puisse agir.
Ligne 309: Ligne 336:
   convert Deuxième_superposé.gif Deuxième.gif -compose ChangeMask ​ -composite ​ Deuxième_removed.png   convert Deuxième_superposé.gif Deuxième.gif -compose ChangeMask ​ -composite ​ Deuxième_removed.png
  
-Les images JPEG couleur ont souvent de légèress ​variations de couleur résultant des pertes liées à la compression,​ le réglage du Fuzz Factor doit être faible pour cibler les couleurs proches.Il est parfois utile d'​inverser les deux images pour reconstruire la transparence à partir du "​trou"​ de l'​arrière plan plutôt que d'agir sur l'​image superposée.+Les images JPEG couleur ont souvent de légères ​variations de couleur résultant des pertes liées à la compression,​ le réglage du Fuzz Factor doit être faible pour cibler les couleurs proches. Il est parfois utile d'​inverser les deux images pour reconstruire la transparence à partir du "​trou"​ de l'​arrière-plan plutôt que d'agir sur l'​image superposée.
  
 ==== Conjure ==== ==== Conjure ====
Ligne 332: Ligne 359:
  
 ===== FAQ ===== ===== FAQ =====
 +
 +==== J'​obtiens une erreur dans la conversion en PDF (et EPS...) ====
 +à la commande :
 +  convert image1.jpg image2.jpg image.pdf
 +On a l'​erreur :
 +
 +  convert: not authorized `image.pdf'​ @ error/​constitute.c/​WriteImage/​1028.
 +  ​
 +  ​
 +
 +Cette protection fait suite à l'​été 2018 d'une possibilité très critique d'​élévation de privilège via Ghostscript (https://​www.kb.cert.org/​vuls/​id/​332928/​) qui a mis un temps anormal voire qui n'est toujours pas patché. Les devs de imagemagick ont donc décidé le temps que le patch soit appliqué d'​interdire les conversions vers le format PDF (et autres). Il faut éditer le fichier ''​ /​etc/​ImageMagick-6/​policy.xml''​ :
 +Pour PDF, remplacer la ligne :
 +  <policy domain="​coder"​ rights="​none"​ pattern="​PDF"​ />
 +Par la ligne :
 +  <policy domain="​coder"​ rights="​read | write" pattern="​PDF"​ />
 +Pour EPS, remplacer la ligne :
 +  <policy domain="​coder"​ rights="​none"​ pattern="​EPS"​ />
 +Par la ligne :
 +  <policy domain="​coder"​ rights="​read | write" pattern="​EPS"​ />
 +
 +
 +Où alors en ligne de commandes :
 +
 +<​code>​
 +sudo sed -i '​s/​rights="​none"​ pattern="​PDF"/​rights="​read | write" pattern="​PDF"/'​ /​etc/​ImageMagick-6/​policy.xml
 +sudo sed -i '​s/​rights="​none"​ pattern="​EPS"/​rights="​read | write" pattern="​EPS"/'​ /​etc/​ImageMagick-6/​policy.xml
 +sudo sed -i '​s/​rights="​none"​ pattern="​XPS"/​rights="​read | write" pattern="​XPS"/'​ /​etc/​ImageMagick-6/​policy.xml
 +sudo sed -i '​s/​rights="​none"​ pattern="​PS"/​rights="​read | write" pattern="​PS"/'​ /​etc/​ImageMagick-6/​policy.xml
 +</​code>​
 +
  
 ==== Où trouver imagemagick-devel ? ==== ==== Où trouver imagemagick-devel ? ====
Ligne 339: Ligne 396:
 ==== J'​obtiens une erreur '​Échec de la délégation'​ lorsque je lance une commande ==== ==== J'​obtiens une erreur '​Échec de la délégation'​ lorsque je lance une commande ====
  
-Lorsque vous lancez une commande, ImageMagick peut délèguer ​des opérations à d'​autres programmes. Il est donc nécessaire que ces derniers soient installés.+Lorsque vous lancez une commande, ImageMagick peut déléguer ​des opérations à d'​autres programmes. Il est donc nécessaire que ces derniers soient installés.
  
 Pour obtenir la liste de ces délégations,​ tapez : Pour obtenir la liste de ces délégations,​ tapez :
Ligne 357: Ligne 414:
  
 Donc **[[apt>​librsvg2-bin]]** pour le support des images svg. Donc **[[apt>​librsvg2-bin]]** pour le support des images svg.
 +
 +==== J'​obtiens une erreur de cache, width or height ====
 +Erreur du type:
 +<​code>​convert-im6.q16:​ DistributedPixelCache '​127.0.0.1'​ @ error/​distribute-cache.c/​ConnectPixelCacheServer/​244</​code>​
 +Il faut modifier le fichier de configuration d'​imagemagick pour augmenter le cache (attention à disposer de la mémoire correspondante!):​
 +<file - /​etc/​ImageMagick-6/​policy.xml>​
 +<policy domain="​resource"​ name="​memory"​ value="​3GB"/>​
 +<policy domain="​resource"​ name="​disk"​ value="​2GB"/>​
 +</​file>​
 +
 +<​code>​
 +sudo sed -i '​s/​name="​memory"​ value="​256MiB"/​name="​memory"​ value="​3GiB"/'​ /​etc/​ImageMagick-6/​policy.xml
 +sudo sed -i '​s/​name="​disk"​ value="​1GiB"/​name="​disk"​ value="​2GiB"/'​ /​etc/​ImageMagick-6/​policy.xml
 +
 +
 +sudo sed -i '​s/​name="​memory"​ value="​256MiB"/​name="​memory"​ value="​512MiB"/'​ /​etc/​ImageMagick-6/​policy.xml
 +sudo sed -i '​s/​name="​disk"​ value="​1GiB"/​name="​disk"​ value="​2GiB"/'​ /​etc/​ImageMagick-6/​policy.xml
 +</​code>​
 +
 +Pour une erreur //width or height// (j'​avais une image de 7803x19208) ((https://​askubuntu.com/​a/​1484930/​385361)):​
 +<file - /​etc/​ImageMagick-6/​policy.xml>​
 +<policy domain="​resource"​ name="​width"​ value="​24KP"/>​ <!-- default 16KP -->
 +<policy domain="​resource"​ name="​height"​ value="​24KP"/>​ <!-- default 16KP -->
 +</​file>​
 +j'ai eu ensuit l'​erreur cache et j'ai dû monter "​disk"​ à 3GiB (cf. ci-dessus)
 ===== Voir aussi ===== ===== Voir aussi =====
  
   * [[http://​www.imagemagick.org/​script/​command-line-tools.php|Site officiel]] **(en)**   * [[http://​www.imagemagick.org/​script/​command-line-tools.php|Site officiel]] **(en)**
   * [[http://​www.imagemagick.org/​Usage|De nombreux exemples]] **(en)**   * [[http://​www.imagemagick.org/​Usage|De nombreux exemples]] **(en)**
-  * [[http://softlibre.gloobe.org/doku.php?​id=imagemagick:​doc_start|Documentation non-officielle]] **(fr)**+  * [[http://www.fmwconcepts.com/imagemagick/​multicrop2/​index.php|Pour aller plus loin : de nombreux scripts pour Imagemagick]] **(en)**
  
 ---- ----
  
- //​Contributeurs principaux : [[:​utilisateurs:​kanor]],​ [[:​utilisateurs:​ZondeR]],​ [[:​utilisateurs:​Zococo]],​ moko138.//+ //​Contributeurs principaux : [[:​utilisateurs:​kanor]],​ [[:​utilisateurs:​ZondeR]],​ [[:​utilisateurs:​Zococo]],​ moko138, [[:​utilisateurs:​bcag2]].//
  • imagemagick.1489016088.txt.gz
  • Dernière modification: Le 09/03/2017, 00:34
  • par 176.147.63.19