⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://usage.imagemagick.org/compose/index.html).

Exemples ImageMagick -- Composition d'images

Préface et index des exemples ImageMagick
La composition d'images dans IM

La composition d'images dans IM

La composition d'images est le processus consistant à fusionner deux images (et seulement deux) de diverses manières. Elle est associée à la composition alpha qui décrit le résultat selon la partie de la superposition qui est transparente. La composition d'images sert à mélanger et à moyenner des images, à transférer des canaux d'image, à découper, joindre ou empiler des segments d'images de formes irrégulières. Ou encore, dans le cadre d'opérations mathématiques complexes. Une bonne introduction alternative à la composition d'images est SVG Compositing in 30 Minutes. Vous pouvez aussi découvrir les détails mathématiques précis en lisant la page SVG Alpha Compositing, qui décrit les méthodes de composition d'images les plus importantes. Les commandes suivantes sont les deux méthodes directes de « composite » d'images disponibles dans ImageMagick...

  magick composite {_overlay_} {_background_} [{_mask_}] [-compose {_method_}]   {_result_}

  magick {_background_} {_overlay_} [{_mask_}] [-compose {_method_}] -composite   {_result_}

La commande « magick composite » est la méthode conventionnelle de composition dans IM. Le fait de disposer d'une commande dédiée montre à quel point la composition d'images est importante. L'opérateur « magick » « [-composite](https://imagemagick.org/command-line-options/#composite) » peut lui aussi effectuer la composition d'images dans le cadre d'une tâche de traitement d'image plus vaste. </> Notez l'ordre inversé des images lorsqu'on utilise « magick ». Cet ordre est pratique, car vous travaillez généralement avec un canevas principal sur lequel vous préparez et fusionnez des images pour former une nouvelle image. L'ordre des images est important. Des exemples pratiques des deux techniques (et davantage) peuvent être consultés dans Superposition de plusieurs images, lecture recommandée avant de poursuivre.

Définition et terminologie

L'image la plus importante est l'image background (arrière-plan), aussi souvent appelée image destination ; c'est l'image qui est modifiée par la composition d'images. L'image background définit non seulement la taille finale de la composition, mais ses métadonnées , telles que les « comments », « labels », « density », « profiles » et ainsi de suite, sont également préservées. Sa position est fixe et forme généralement le canevas que vous construisez, d'où le nom background. Retenez-le bien !

L'image overlay (superposition), ou image source, contrôle la manière dont la méthode « [-compose](https://imagemagick.org/command-line-options/#compose) » doit modifier l'image background (ou destination) fixe. L'image peut être repositionnée par rapport à l'image background fixe (généralement à l'aide des réglages « [-geometry](https://imagemagick.org/command-line-options/#geometry) » et « [-gravity](https://imagemagick.org/command-line-options/#gravity) »). Cependant, l'image overlay ainsi que toutes les métadonnées qu'elle contient sont supprimées une fois l'opération de composite terminée.

Parfois, une troisième image mask (masque) est ajoutée à la commande. Cette image sert à définir et à contrôler quelles parties de l'image background seront modifiées, et dans quelle mesure, par la composition résultante. Pour plus de détails, voir Masquage de composite ci-dessous. Depuis IM v6.5.3-4, le réglage Define spécial « compose:outside-overlay » (voir Réglage Outside-Overlay) peut être défini à la valeur « false » pour désactiver toute modification de l'image background en dehors de la zone rectangulaire couverte par l'image overlay. Sans cela, certaines méthodes de composition effacent les zones non couvertes par l'overlay , dans le cadre de la définition du compose.
La méthode de composition proprement dite est contrôlée par le réglage « [-compose](https://imagemagick.org/command-line-options/#compose) », dont la valeur par défaut est « Over ». Autrement dit, l'image source est dessinée Over (par-dessus) l'image background, ce qui correspond à ce que la plupart des gens imaginent lorsqu'ils réalisent une composition d'images. La majeure partie de cette section des exemples IM sert à détailler ce que font les différentes « méthodes » de composition et comment vous pouvez les utiliser. Pour visualiser les résultats des méthodes de composition, voir Tables des méthodes de composition. Les tables n'illustrent pas l'usage prévu de la méthode, seulement la sortie brute à partir de diverses images de test. La méthode de composition est insensible à la casse et les caractères « _ » ou « - » sont facultatifs. Ainsi, la méthode de composition « Dst_Over » peut aussi être spécifiée sous la forme : « dst_over », « dst-over », « DstOver », « dstover », ou même « dstOVER ». Elles signifient toutes la même chose. De plus, les méthodes de composition « Over », « ATop », « In » et « Out » sont des abréviations des noms plus verbeux : « Src_Over », « Src_ATop », « Src_In » et « Src_Out ». En plus de la longue liste de méthodes « [-compose](https://imagemagick.org/command-line-options/#compose) », certaines nécessitent des arguments numériques supplémentaires pour fonctionner correctement. Dans la commande « magick composite », ces arguments sont passés au moyen des options spéciales : « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) », « [-blend](https://imagemagick.org/command-line-options/#blend) », « [-watermark](https://imagemagick.org/command-line-options/#watermark) » (« modulate »), « [-displace](https://imagemagick.org/command-line-options/#displace) » et « [-distort](https://imagemagick.org/command-line-options/#distort) ». Depuis IM v6.5.3-4, la commande « magick » peut passer des arguments spéciaux à l'opérateur « [-composite](https://imagemagick.org/command-line-options/#composite) » au moyen du réglage Define, « compose:args ». Pour des exemples, voir les méthodes spéciales Dissolve et Blend ci-dessous.

Opérateurs de composition d'images

Outre les deux styles de composition directe de deux images présentés ci-dessus, un certain nombre d'autres opérations d'image utilisent également la composition alpha dans le cadre de leur traitement interne. Ces opérations sont affectées par le réglage « [-compose](https://imagemagick.org/command-line-options/#compose) » courant, bien qu'elles utilisent soit leur propre positionnement interne, soit une technique de positionnement par décalage de canevas virtuel d'image en calques. Voici la liste de tous les opérateurs connus pour être affectés par le réglage compose...

Composition de paires d'images Exemples pratiques utilisant les opérateurs primaires de composition d'images, aussi bien la commande primitive « magick composite » que l'opérateur -composite" de « magick ». Ces méthodes de bas niveau utilisent les réglages Geometry/Gravity pour déterminer la position de l'image en superposition. Opérateurs de superposition en calques Les opérateurs de superposition d'images « [flatten](layers.html#flatten) », « [mosaic](layers.html#mosaic) » et « [-layers merge](layers.html#merge) » superposent toutes les multiples images de la séquence d'images courante sur un seul nouveau canevas, dont la taille et la position sont déterminées par l'opérateur de superposition choisi. Cela utilise les réglages de décalage Virtual Canvas/Page pour déterminer la position de l'image en superposition. Opérateurs d'expansion des bords Opérateurs qui superposent chaque image individuelle sur des canevas préparés en interne. Cela inclut des opérateurs tels que « [-border](https://imagemagick.org/command-line-options/#border) », « [-frame](https://imagemagick.org/command-line-options/#frame) » et « [-extent](https://imagemagick.org/command-line-options/#extent) ». (Voir Ajouter/supprimer des bords d'image). Aucune information de positionnement n'est utilisée, bien que « [-extent](https://imagemagick.org/command-line-options/#extent) » utilise les décalages de gravity et de geometry pour superposer sur une image d'arrière-plan de couleur unie. Dessin d'images La méthode de superposition d'images « [-draw 'image...'](https://imagemagick.org/command-line-options/#draw) » superpose une seule image source externe sur une liste d'images de destination. C'est la seule technique de composition d'images disponible pour « [mogrify](basics.html#mogrify) ». Elle récupère l'image « overlay » depuis une source externe, ce qui lui permet de contourner l'absence d'opérateur de liste de cette commande. Les informations de redimensionnement et de position sont également fournies par l'utilisateur, et elles peuvent être affectées par la gravity. Composite multi-listes avec Layers L'opérateur « [-layers composite](anim_mods.html#composite) » vous permet de composer ensemble deux listes distinctes d'images multiples, une paire d'images à la fois, pour former une nouvelle séquence multi-images fusionnée. Il compose également une séquence d'images avec une image unique (qui peut être soit une image « overlay » statique, soit une image « destination » statique). C'est aussi le SEUL opérateur de composition qui vous permet d'utiliser À LA FOIS le décalage universel « [-geometry](https://imagemagick.org/command-line-options/#geometry) » affecté par « [-gravity](https://imagemagick.org/command-line-options/#gravity) » (globalement) et les décalages de canevas virtuel « [-page](https://imagemagick.org/command-line-options/#page) » des images individuelles, à partir de cette position globale. Cet opérateur de composition est particulièrement important pour composer des animations d'images, ou d'autres séquences d'images, dans leur ensemble, plutôt que d'avoir besoin d'un script pour traiter chaque paire d'images une à une.


Positionner l'image en superposition

Réglages Geometry/Gravity de composite

Dans une composition alpha normale, le réglage « [-geometry](https://imagemagick.org/command-line-options/#geometry) » est utilisé avec « [-gravity](https://imagemagick.org/command-line-options/#gravity) » pour positionner l'image source par rapport à l'image de destination. L'utilisation de ces réglages est traitée en détail dans Positionnement d'images à l'aide de Gravity. Notez que la composante de taille de « [-geometry](https://imagemagick.org/command-line-options/#geometry) » est particulière en ce qu'elle redimensionne une image (geometry). Dans « [composite](../static/img/compose/composite) », elle redimensionne l'image source, mais pour « [convert](../static/img/compose/magick) » c'est la dernière image de la séquence qui est redimensionnée. Il s'agit techniquement d'un aspect distinct de la composition d'images. Voir Redimensionnement par Geometry et Superposition d'images avec Composite. Dans une composition alpha, seules deux images sont impliquées, la « source » et la « destination » (ou « background »), bien qu'une troisième image de masquage puisse également être fournie pour limiter la zone affectée par la composition.

Décalages de calque Canvas/Page

La composition d'images en calques repose sur une philosophie très différente. Toutes les images (autant que vous le souhaitez) sont traitées de manière équivalente dans l'ordre donné. Elles ont toutes un « [-page](https://imagemagick.org/command-line-options/#page) » ou décalage de page qui positionne le coin supérieur gauche de chaque image par rapport à une « origine » de canevas virtuel (le décalage par défaut), mais sans gravity. Pour traiter plusieurs images, une nouvelle image d'arrière-plan est générée à l'aide de la couleur « [-background](https://imagemagick.org/command-line-options/#background) » courante, avec une taille qui dépend de l'opération effectuée. Elle est considérée comme l'image « destination » (le canevas). TOUTES les images sont composées sur ce nouveau canevas une à une, dans l'ordre. Même si seulement deux images sont fournies, une nouvelle image est tout de même créée et deux compositions distinctes sont appliquées. Autrement dit, cela peut être lent. Toutes les images sont traitées comme des images « source » et l'ordre dans lequel elles sont listées détermine le résultat. Le décalage de « calque » n'est toutefois PAS affecté par la gravity. Comme chaque image peut avoir un « décalage de canevas » distinct, la composition de plusieurs images s'applique mieux à l'aide des opérateurs de superposition en calques ainsi que de la composition de séquences multi-images pour les animations. Les deux styles sont des techniques de positionnement très différentes et il est important d'utiliser le bon style selon les techniques de composition que vous prévoyez d'employer.

Les deux techniques de positionnement

Une seule technique de composition, l'opérateur de composition Layers multi-listes, vous permet d'utiliser les DEUX méthodes de positionnement simultanément. Les deux listes sont d'abord positionnées globalement à l'aide de « [-geometry](https://imagemagick.org/command-line-options/#geometry) » et « [-gravity](https://imagemagick.org/command-line-options/#gravity) », ce qui est appliqué à la taille du canevas virtuel de la première image de chaque liste. Ensuite, chaque image individuelle de la liste est décalée à l'aide de « [-page](https://imagemagick.org/command-line-options/#page) » à partir de cette position globale pour déterminer la position finale. Bien sûr, si une image en superposition ne tient pas dans une image de destination donnée parmi les images fournies, elle sera rognée par cette image. Il est donc généralement conseillé de n'utiliser que des images entièrement fusionnées (coalesced) pour la ou les images de destination, à la taille appropriée nécessaire. Les images résultantes peuvent bien entendu être de nouveau réduites en taille ensuite.


Méthodes de composition alpha de Duff-Porter

Les méthodes de composition d'images de Duff-Porter constituent un ensemble traditionnel de 12 méthodes très bien définies. On les appelle composition alpha car les images sont fusionnées selon un aspect de la transparence de l'image, ou « canal alpha ». Vous en trouverez les définitions mathématiques dans le document SVG Alpha Compositing. Voici une table classique montrant les résultats de ces 12 méthodes avec deux images triangulaires. [IM Output] Voir aussi Tables brutes des méthodes de composition avec des diagrammes montrant davantage de méthodes de composition avec différentes formes d'images et différents dégradés. La méthode de composition par défaut (lorsqu'elle est totalement indéfinie) est « Over », et c'est ce que la plupart des gens veulent normalement lorsqu'ils composent des images. Pour comprendre, et mémoriser, ce que fait chacune des méthodes de composition ci-dessus, l'image résultante serait la même que si vous disiez...

**{_Source_} --{_compose_method_}--> {_background_}**


****
Autrement dit, l'image résultante pour la méthode « ATop » équivaut à « l'image en superposition 'ATop' de l'image d'arrière-plan ». Cela signifie que l'image d'arrière-plan conservera sa « forme », mais que les couleurs de l'image source viendront se poser « par-dessus » l'arrière-plan. Rappelez-vous cependant que l'ordre des images est inversé lorsqu'on utilise l'opérateur « [magick -composite](https://imagemagick.org/command-line-options/#composite) ». Ces 12 méthodes définissent non seulement laquelle des deux images est « visible » dans le résultat, mais aussi la manière dont elle affecte la partie de l'image qui N'EST PAS recouverte par l'image source. Autrement dit, si l'« arrière-plan » d'origine est laissé tel quel ou complètement effacé. J'ai volontairement rendu l'image « destination » de la table ci-dessus plus grande afin que vous puissiez voir si le reste de l'image a été effacé ou non. Ces méthodes « d'effacement » sont : « [Src](#src) », « In », « [Dst_In](#dstin) », « Out », « Dst_ATop » et « [Clear](#clear) ». Depuis IM v6.5.3-4, vous pouvez utiliser un réglage Define « compose:outside-overlay=false » pour empêcher la composition de Duff-Porter d'effacer l'image destination en dehors de la zone recouverte. Voir les exemples dans les méthodes de composition « [Copy](#copy) » et « [Clear](#clear) », ainsi que le réglage Outside-Overlay, pour plus de détails. Notez que « [Copy](#copy) » est une « 13e » méthode de composition spéciale fournie par IM. Elle équivaut essentiellement à une composition « [Over](#over) », mais avec effacement de l'arrière-plan dans la zone recouverte. En termes d'implémentation, il s'agit toutefois d'une composition « [Src](#src) » avec outside-overlay (c'est-à-dire l'effacement de l'arrière-plan) désactivé. ImageMagick v5 et antérieur n'effaçait aucune zone non recouverte par l'image source. Il s'agissait d'un traitement incorrect des opérateurs de composition de Duff-Porter, corrigé au cours du développement d'IM v6.
L'un des aspects les plus importants des méthodes de composition alpha de Duff-Porter est qu'elles ne rendront jamais visible un « pixel de couleur totalement transparent ». C'est important, car une partie totalement transparente de l'image a une couleur indéfinie. Elle pourrait en fait contenir N'IMPORTE QUELLE valeur de couleur sans affecter le résultat visible de l'image. Voir Contrôler la transparence d'une image pour plus de détails sur la « gestion du canal de transparence ». C'est pourquoi la composition de Duff-Porter est souvent la méthode de masquage préférée, plutôt que l'alternative « [CopyOpacity](#copyopacity) » qui remplace complètement le canal alpha d'une image et peut rendre visibles les couleurs invisibles indéfinies.

Over (image en superposition par-dessus l'arrière-plan)

C'est la méthode de composition par défaut, celle à laquelle tout le monde pense lorsqu'on superpose une image sur une autre. L'image en superposition est placée « par-dessus » l'image d'arrière-plan de la même manière qu'une « cellule d'animation » ou un « transparent pour rétroprojecteur » peut être placé sur une scène ou une image d'arrière-plan. C'est si courant que je doute d'avoir vraiment besoin d'en dire plus. Présentons donc un exemple de superposition de l'image d'une seule lettre sur une image d'arrière-plan. |

  magick -background none  -fill white \
          -font Ravie  -pointsize 36   label:A   label_A_white.png
  magick composite -gravity center label_A_white.png   rose:  compose_over.gif

[IM Output]
[IM Output]
La superposition peut être centrée à l'aide de gravity comme ci-dessus, ou positionnée précisément à l'aide d'un réglage « [-geometry](https://imagemagick.org/command-line-options/#geometry) ». Si elle est positionnée en dehors des limites de l'arrière-plan, elle sera rognée ou ignorée, selon le cas. Dans cet exemple, l'image est superposée à l'aide de l'opérateur « convert -composite », mais positionnée à moitié au-dessus de l'arrière-plan. Notez l'inversion de l'ordre des images. |

  magick rose:  label_A_white.png \
          -geometry +5-15   -composite   convert_over.gif

[IM Output]

Dst_Over (place l'image « sous » l'arrière-plan)

Comme les autres méthodes « Dst_ », celle-ci fonctionne presque exactement comme la version « Src_ » de la méthode, mais avec les images en superposition et d'arrière-plan permutées. Ainsi, « [Dst_Over](#dstover) » équivaut à placer l'image source en superposition « sous » la destination. Le résultat est que seules les parties de notre image source ou en superposition non masquées par l'image de destination ou d'arrière-plan seront visibles, dépassant par en dessous. Ce N'est PAS exactement la même chose que « [Over](#over) » avec les images arguments permutées, car la taille, le positionnement et les autres métadonnées de l'image proviennent toujours de l'image d'arrière-plan ou de destination. Rappelez-vous que la taille de l'image de sortie est la même que celle de l'image « background », et que la position de l'image source est relative à l'arrière-plan (à l'aide de « [-geometry](https://imagemagick.org/command-line-options/#geometry) » et « [-gravity](https://imagemagick.org/command-line-options/#gravity) »). Par exemple, ici nous superposons une étiquette « A » noire « sous » notre « A » blanc original. Nous pouvons repositionner le « A » noir par rapport à l'arrière-plan du « A » blanc. Comme vous pouvez le voir, c'est idéal pour ajouter une ombre franche, sans avoir à se soucier d'agrandir la taille de l'image. |

  magick -background none  -fill black \
          -font Ravie  -pointsize 36   label:A   label_A_black.png
  magick composite -compose Dst_Over  -geometry +5+5 \
          label_A_black.png  label_A_white.png   compose_under.png

[IM Output]
[IM Output]
Le point important à noter est que la taille de l'arrière-plan est préservée tandis que la position de la superposition, par rapport à l'arrière-plan, peut être modifiée et est rognée par l'arrière-plan. C'est ce qui rend cet opérateur si important et si utile. Le réglage « [-tile](https://imagemagick.org/command-line-options/#tile) » de « magick composite » rend également cette forme de « over » très utile pour carreler sous une image. Par exemple, carrelons le motif damier intégré sous la lettre ombrée que nous venons de créer. |

  magick composite  -compose Dst_Over -tile pattern:checkerboard \
             compose_under.png   compose_under_tiled.jpg

[IM Output]

Src (« rogne » aux dimensions de l'image d'arrière-plan)

Cet opérateur remplace complètement l'image d'arrière-plan par l'image en superposition. Les couleurs et la transparence de l'arrière-plan sont entièrement jetées, laissant une image vierge de la même taille que la destination d'origine, sur laquelle est appliquée l'image source. Mais à quoi cela sert-il ? Eh bien, à deux choses. Premièrement, vous remplacez effectivement l'image d'arrière-plan par l'image source tout en préservant toutes les métadonnées associées à l'image d'arrière-plan d'origine. Autrement dit, l'image change mais pas les métadonnées. Deuxièmement, la taille de l'image finale ne change pas même si le contenu de l'image change. Autrement dit, l'image résultante a la même taille que l'arrière-plan d'origine. Vous pouvez ainsi utiliser cet opérateur pour soit rogner, soit ajouter une bordure à l'image source ou en superposition afin qu'elle devienne de la même taille que l'image d'arrière-plan fournie (avec les métadonnées de l'arrière-plan). Par exemple, supposons que vous vouliez créer une image plasma et la découper pour qu'elle ait la même taille que l'image rose intégrée. Cela vous permettra de le faire sans avoir besoin de savoir quelle est la taille de l'image rose. |

  magick composite -compose Src  -size 100x100  plasma:tomato-dodgerblue \
            rose:  compose_crop.gif

[IM Output]
Bien entendu, ce qui précède équivaut à un « [-crop](https://imagemagick.org/command-line-options/#crop) » de l'image plasma, et non à un « resize ». Les métadonnées de l'image d'origine sont également préservées. Autrement dit, même s'il s'agit désormais d'une image plasma, les métadonnées de l'image indiquent qu'il s'agit toujours d'une image « rose » provenant de la source d'image « rose: ».
Si la superposition est plus petite, le reste de l'image d'arrière-plan est remplacé par de la transparence pour la compléter. Notez cependant que l'arrière-plan doit posséder un canal alpha, sinon l'espace supplémentaire sera rempli de noir (la couleur qu'a « none » ou « transparent » en l'absence de canal alpha). |

  magick composite -compose Src -gravity South \
            hand_point.gif   rose:  -alpha set   compose_expand.gif

[IM Output]
[IM Output]

Copy (copie ou remplace l'image)

Cet opérateur ne fait pas partie des 12 méthodes de composition de « Duff-Porter », c'est pourquoi il ne figurait pas dans le tableau ci-dessus. Il n'en est pas moins très important. Il fonctionne exactement comme la méthode de composition « Src », mais il ne touche pas à l'image d'arrière-plan en dehors de la zone recouverte. Autrement dit, il limite ses capacités de copie à la seule zone recouverte et à rien d'autre. Cela vous permet de rogner une petite section d'une image plus grande, de travailler sur l'image plus petite pour gagner en rapidité, puis de « copier » les résultats sur l'image plus grande sans toucher aux autres zones de cette image. Cela vous permet à son tour d'optimiser le traitement d'images de très grande taille. Voici le même exemple que celui utilisé ci-dessus, mais avec « [Copy](#copy) » au lieu de « [Src](#src) », montrant comment IM ne perdra pas de temps à effacer le reste de l'arrière-plan comme l'exige l'algorithme de « Duff-Porter ». |

  magick composite -compose Copy -gravity South \
            hand_point.gif   rose:  -alpha set   compose_copy.gif

[IM Output]
Cet opérateur est également très semblable à « [Over](#over) », sauf que la transparence de l'image source est elle aussi copiée, remplaçant complètement l'image d'arrière-plan. En l'absence de transparence, il se comporterait exactement comme « [Over](#over) ». En interne, il modifie le réglage spécial de contrôle de composition « outside-overlay » (voir la suite).

Réglage Outside-Overlay

Depuis IM v6.5.3-4, la possibilité de contrôler si une méthode de composition affecte également les zones en dehors de la zone recouverte a été rendue contrôlable par l'utilisateur en définissant « compose:outside-overlay ». Il est « activé » par défaut, mais vous pouvez le désactiver en réglant sa valeur à « false ». Par exemple, voici un équivalent de la méthode de composition Copy mais utilisant la méthode de composition Src plus traditionnelle.. |

  magick rose: hand_point.gif -alpha set -gravity South \
          -define compose:outside-overlay=false \
          -compose Src -composite    compose_copy_src.gif

[IM Output]
Pour un exemple d'utilisation de ce drapeau, voir Superpositions de coin PageCurl.

Outside-Overlay contre « clip-to-self » de SVG

Le define « compose:outside-overlay » est à bien des égards similaire à l'utilisation de l'attribut « clip-to-self » de SVG. Tous deux restreignent la composition à la seule région recouverte, sans affecter le reste de l'image de destination. Cependant, le « clip-to-self » de SVG ne s'applique qu'à la zone peinte (comme un masque), là où le réglage « outside-overlay » d'IM s'applique à toute la zone rectangulaire de l'image source à l'endroit où elle recouvre l'image d'arrière-plan. Ce n'est pas très clair dans le manuel de composition SVG, car les exemples donnés ne sont pas très bien expliqués, ce qui les rend très déroutants. Mais si vous voulez essayer de les comprendre, voir SVG Composition 'clip-to-self' property ou Understanding SVG 1.2 composition, clip-to-self. Notez qu'un masque d'écriture peut aussi être utilisé pour obtenir ce type de contrôle, mais avec des zones de forme quelconque selon le masque fourni. À cet égard, il ressemble bien davantage à l'attribut « clip-to-self » de SVG, où l'image source sert aussi de masque d'écriture.

Dst (un compose « no-op »)

Cet opérateur ne fait rien. L'image source, ou en superposition, est complètement ignorée et l'image de destination, ou d'arrière-plan, reste inchangée. La véritable utilité de cette méthode est de servir de moyen pour « désactiver » une opération de composition alpha dans d'autres opérateurs d'image. Par exemple, nous utilisons l'opérateur Frame pour encadrer notre image rose (avec un arrière-plan transparent), puis nous utilisons « -compose Dst » pour empêcher l'image d'être ajoutée au cadre. Autrement dit, nous n'utilisons la rose que pour définir la taille du cadre interne du résultat. Le cadre, et seulement le cadre, constitue le résultat. |

  magick rose:  -alpha set  -mattecolor Gold  -bordercolor none \
          -compose Dst   -frame 7x7+3+2   compose_frame_dst.gif

[IM Output]
L'opération spéciale Alpha Set garantit qu'un canal alpha est disponible dans l'image, faute de quoi vous obtiendriez un centre noir plutôt que transparent. Le « [-bordercolor](https://imagemagick.org/command-line-options/#bordercolor) » définit la couleur à l'intérieur du cadre, qui est généralement placée sous l'image source. La méthode « [Dst](#dst) » peut également être utile dans un script pour désactiver une composition alpha au sein d'une commande longue et complexe sans avoir besoin de créer deux commandes IM distinctes.

Dst_In (ou « masque » l'arrière-plan avec la source)

La méthode « **Dst_In** » revient à utiliser l'image source comme masque « [Copy_Opacity](#copyopacity) » pour l'image d'arrière-plan. Elle retire la forme de l'image en superposition de l'image d'arrière-plan tel un emporte-pièce qui découpe la forme d'un biscuit dans la pâte. Par exemple, utilisons le « A » élégant vu plus haut comme masque pour découper sa forme dans l'image rose. |

  magick composite -compose Dst_In  -gravity center \
            label_A_white.png  rose: -alpha Set  compose_mask.png

[IM Output]
Contrairement à la méthode « [Copy_Opacity](#copyopacity) », vous ne POUVEZ PAS utiliser une image en niveaux de gris comme masque, car seul le canal alpha de l'image en superposition est utilisé dans cette opération. Toute couleur de la superposition est complètement ignorée. | Tout ce que font en réalité les méthodes « Dst_In » et « Src_In », c'est multiplier les canaux alpha des deux images. La couleur de l'image appropriée (selon la méthode) est préservée.
---|---

Dst_Out (ou une opération d'« effacement »)

En reprenant la métaphore de la « pâte à biscuits » de « [Dst_In](#dstin) », le résultat de la méthode « **Dst_Out** » est la pâte restée en place après qu'un biscuit a été découpé. Elle peut servir à percer des trous, ou à prendre des bouchées, dans l'image d'arrière-plan, en utilisant la forme de la superposition. Toute couleur de la superposition est de nouveau complètement ignorée. |

  magick composite -compose Dst_Out  -gravity center \
            label_A_white.png  rose: -alpha Set  compose_erase.png

[IM Output]
Les formules mathématiques de ces deux méthodes de composition sont conçues explicitement pour que, si vous utilisez « [Dst_In](#dstin) » et « [Dst_Out](#dstout) » sur le même jeu d'images, vous puissiez les réassembler (à l'aide de la méthode « [Plus](#plus) ») comme les pièces d'un puzzle. Par exemple, ici nous « additionnons » (à l'aide de la composition « [Plus](#plus) ») les deux dernières images générées ci-dessus. Cette image est exactement identique (au pixel près) à l'image « rose: » originale. |

  magick composite -compose Plus  compose_mask.png  compose_erase.png \
            compose_rejoin.png

[IM Output]
Effacer une partie d'une image n'est pas une tâche facile dans un programme graphique, quel qu'il soit. Par exemple, une opération « [-draw](https://imagemagick.org/command-line-options/#draw) » ne peut qu'ajouter de la couleur à une image. Elle ne retirera pas de couleur une fois celle-ci appliquée à votre canevas. Pensez à un peintre qui peint une publicité sur une porte ou une fenêtre en verre. Il, ou elle, peut ajouter de la peinture, mais ne peut pas en retirer en peignant par-dessus. En dessinant la forme que vous voulez effacer sur un canevas transparent, vous pouvez ensuite utiliser « [Dst_Out](#dstout) » pour la retirer de votre image de travail. C'est un peu comme notre peintre essuyant soigneusement la peinture fraîche avec un chiffon de forme spéciale. La forme peut servir à retirer tout ou partie de la couleur, la rendant soit totalement, soit semi-transparente. Par exemple, supposons que vous vouliez dessiner un symbole de croissant de lune sur un canevas transparent. Cette méthode de composition alpha facilite le dessin de cette forme difficile en superposant deux cercles. |

  magick -size 70x70 xc:none -fill white -draw 'circle 35,35 35,5' \
          \( -size 70x70 xc:none -fill black -draw 'circle 28,30 35,5' \) \
          -alpha Set -compose Dst_Out  -composite   moon_crescent.png

[IM Output]
| La deuxième image doit être créée et dessinée entre parenthèses. Sinon, vous constaterez que « [-draw](https://imagemagick.org/command-line-options/#draw) » dessinera À LA FOIS sur l'image en superposition ET sur votre arrière-plan d'origine, ce qui est évidemment faux. Si vous n'utilisez pas de parenthèses, vous trouverez un cercle de pixels noirs semi-transparents autour de la partie effacée de l'image. Je sais, cela m'est arrivé lors de la création de cet exemple, à ma grande contrariété.
---|---

ATop (« Over », mais rogné à l'image d'arrière-plan)

Comme « [Over](#over) », mais limite le résultat à la forme d'origine de l'image d'arrière-plan. Autrement dit, le canal alpha de la destination est inchangé, mais les couleurs de l'image sont recouvertes par toutes les parties non transparentes de l'image source. Si l'image d'arrière-plan est entièrement opaque (sans transparence), cette opération se comportera exactement comme la composition « [Over](#over) » normale. Elle ne diffère que lorsque l'arrière-plan contient de la transparence, qui rogne alors aussi la superposition. Ce qui la rend utile, c'est la superposition d'effets d'éclairage et d'ombrage limités à l'objet (la forme) de la destination. Par exemple, disons que nous avons un cercle rouge et que nous voulons y ajouter un reflet comme s'il s'agissait d'une boule en trois dimensions. Nous pouvons créer le cercle, ainsi que le reflet, puis superposer le reflet à l'aide de « [ATop](#atop) » pour le limiter au cercle. |

  magick -size 70x70 xc:none \
            -fill red -draw 'circle 35,35 10,30'  red_circle.png

  magick -size 70x70 xc:none -draw 'circle 35,35 35,20' \
          -negate  -channel A -blur 0x8    red_highlight.png

  magick composite -compose ATop -geometry -13-17 red_highlight.png \
            red_circle.png red_ball.png

[IM Output] [IM Output] [IM Output]
| La création du reflet blanc a été réalisée à l'aide de « [-negate](https://imagemagick.org/command-line-options/#negate) » pour garantir que toute l'image soit bien blanche. Cela a servi à éviter un bogue de l'opérateur « [-blur](https://imagemagick.org/command-line-options/#blur) », désormais corrigé dans la version IM 6.2.4. Voir Bogue du flou avec transparence pour plus de détails sur cet ancien bogue.
---|---
De manière similaire, nous pouvons ajouter une ombre floue à notre boule, rognée aux limites de la boule elle-même, de sorte qu'elle paraisse encore plus 3D. Je laisse au lecteur l'exercice de comprendre comment la commande suivante parvient à ce résultat. |

  magick moon_crescent.png -fx 0 -channel A -blur 0x7 \
           red_ball.png  +swap -compose ATop -composite  red_ball2.png

[IM Output]
Avec un peu plus de soin dans la préparation des images, l'image ci-dessus peut être rendue encore plus réaliste. Pour illustrer l'usage de cette méthode de composition, ce n'est pas mal. D'autres exemples d'utilisation de la méthode de composition « [ATop](#atop) » sont visibles dans Génération de logos 3D.

Clear (Efface l'arrière-plan. Ignore l'image en superposition)

Il s'agit d'une méthode de composition inhabituelle qui ignore essentiellement complètement l'image en superposition, et se contente d'effacer l'image d'arrière-plan. Cela en fait une méthode idéale pour créer un canevas transparent ou noir, de la même taille que l'image d'arrière-plan, pour des projets complexes. Comme l'image en superposition n'est pas utilisée, une image « null: » d'un seul pixel constitue une bonne superposition à employer. |

  magick composite -compose Clear null:  rose: -alpha Set compose_clear.png

[IM Output]
Bien entendu, l'opération Alpha Set (bien qu'inutile dans ce cas) garantit que la destination possède un canal alpha utilisable lors de l'effacement de l'image en transparence. Si vous désactivez expressément le canal alpha, l'opérateur effacera l'image en noir, en raison des mathématiques impliquées. |

  magick composite -compose Clear null:  rose: -alpha Off compose_black.png

[IM Output]
Le réglage Define spécial « compose:outside-overlay » vous permet de limiter cet effacement à la seule zone recouverte, que l'image en superposition contienne ou non de la transparence. Par exemple : |

  magick rose: hand_point.gif -alpha Set -gravity South \
          -define compose:outside-overlay=false \
          -compose Clear -composite   compose_clear_limited.gif

[IM Output]

Xor (Efface la zone partagée)

Il s'agit d'une méthode de composition très étrange et peu utilisée. Elle superpose deux images puis efface la zone de chevauchement en transparence. |

  magick -size 60x60 \
          \( xc:none -fill blue   -draw 'circle 21,39 24,57' \) \
          \( xc:none -fill red    -draw 'circle 39,39 36,57' \) \
          -compose Xor   -composite   compose_xor_2.png

[IM Output]
Les choses deviennent encore plus intéressantes lorsqu'une troisième image est combinée par xor au résultat ci-dessus. |

  magick -size 60x60  compose_xor_2.png  \
          \( xc:none -fill green  -draw 'circle 30,21 30,3'  \) \
          -compose Xor   -composite   compose_xor_3.png

[IM Output]
Comme vous pouvez le voir, le chevauchement de plusieurs images peut produire des effets merveilleux : tout nombre pair d'images qui se chevauchent donnera une zone transparente, tandis que tout nombre impair d'images qui se chevauchent laissera transparaître la dernière image superposée.

FUTURE:  Xor effects on semi-transparent images get extremely weird.
Explore this and create an example demonstrating this weirdness.

Méthodes de composition mathématiques

Ce groupe de méthodes de composition permet d'effectuer des opérations mathématiques sur les images. Cela peut ne pas sembler très utile, mais pour la manipulation de bas niveau des images, ces méthodes permettent de réaliser des choses auxquelles on ne penserait pas normalement. Contrairement aux méthodes de composition Duff-Porter précédentes, ce sont généralement des méthodes en niveaux de gris. Autrement dit, elles s'appliquent habituellement à des images dont l'une des deux, ou les deux, sont en niveaux de gris, et ne contiennent généralement pas de transparence. Ce n'est pas à dire que la transparence ne peut pas être utilisée (voir Composition mathématique et canal alpha ci-dessous), mais ce n'est pas une pratique très courante. L'usage par défaut des compositions mathématiques est défini par la spécification du format de fichier image SVG. Vous pouvez en lire davantage à ce sujet dans le Guide de composition SVG (2009), ainsi que dans Pegtop Blend Modes et SimpelFilter : Photoshop Blend Modes. L'image en dégradé particulière que vous voyez à côté de chacun des opérateurs suivants illustre l'opérateur en termes de son effet sur les valeurs de couleur. Le résultat est produit en composant deux images en dégradé comme suit...

  magick -size 64x64 gradient:             gradient_src.png
  magick -size 64x64 gradient: -rotate 90  gradient_dst.png
  magick composite gradient_src.png -compose Multiply gradient_dst.png \
            gradient_result.png

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Résultat
---|---|---|---|---

En gros, si vous prenez la valeur de couleur du pixel de superposition (source) verticalement, et le pixel d'arrière-plan (destination) horizontalement, vous pouvez repérer la valeur qui résultera de l'application de cet opérateur avec ces valeurs. Dans l'exemple ci-dessus, vous verrez que '[Multiply](#multiply)' assombrit généralement les images, et que toute valeur noire (0) dans l'une ou l'autre des images d'entrée produit un résultat noir. Quelque chose qui peut être très utile. [IM Output]

Multiply ( ) (rendre le blanc transparent pour diagrammes/texte)

C'est l'une des méthodes de composition les plus utiles, mais les plus sous-estimées, et il s'agit d'une simple multiplication des deux images. Sa formule est bien sûr : _Src_ *_Dest_ Cela signifie que si l'une des images est d'un blanc pur, le résultat sera l'autre image. En revanche, si une image est noire, le résultat sera noir. Entre ces extrêmes, une image assombrira l'image de destination de la quantité indiquée. Notez que 'Multiply' ne fait qu'assombrir une image, jamais l'éclaircir. Autrement dit, elle « atténue » une image vers le noir, ce qui fait de cette méthode de composition un style de composition de type « Burn » (brûlure). (Voir Méthodes de composition d'éclairage ci-dessous) |

  magick label:Rose label_white.gif
  magick composite -compose Multiply -gravity center \
            label_white.gif  rose: compose_multiply.gif

[IM Output]
[IM Output]
Cette méthode fonctionne très bien dans de nombreuses situations, mais elle est particulièrement efficace lorsque l'une des images comporte des lignes noires (ou en niveaux de gris) sur un fond majoritairement blanc, comme les images de texte. Si les deux images contiennent des zones de couleur, vous pouvez obtenir des résultats inhabituels. Autrement dit, cette technique est parfaite pour superposer des images et autres diagrammes directement sur des dessins au trait à fond blanc ou de couleur très claire. Par exemple, je veux ajouter des diagrammes à une page de texte qui sera incluse dans une image générée par lancer de rayons. Vous pouvez voir cette « page de texte » dans les images résultantes de mes Études sur les polyèdres. Étant donné deux masques d'image en niveaux de gris, la multiplication est aussi un bon moyen d'effacer en noir des parties d'une image en fonction d'un masque. Elle procède de façon linéaire, si bien que le masque peut être une image en niveaux de gris plutôt qu'une image purement booléenne activé/désactivé. Voir Composition mathématique. Multiplier une image par elle-même est en fait une technique utile pour produire un assombrissement quadratique d'une image, de sorte que les couleurs vives restent proéminentes, tandis que les autres couleurs deviennent plus sombres. En réalité, cela équivaut à un opérateur Gamma avec une valeur de "0.5", ou à une opération Evaluate PowerOf avec une valeur de "2.0". Voir par exemple un Générateur d'étoiles, pour produire une distribution plus réaliste des intensités d'étoiles. Ou bien on peut l'utiliser sur des images satellites de nuages avant de superposer le résultat sur une carte géographique. [IM Output]

Screen (rendre le noir transparent pour diagrammes/texte)

Ceci est presque exactement comme '[Multiply](#multiply)', sauf que les deux images d'entrée sont inversées avant la composition, et que le résultat final est ensuite inversé à nouveau pour ramener l'image à la normale. En termes techniques, les deux méthodes sont « duales » l'une de l'autre. Cela donne pour formule : 1-(1-_Src_)*(1-_Dest_) Cela signifie que si l'une des images est d'un noir pur, le résultat sera l'autre image. En revanche, si une image est blanche, le résultat sera blanc. Entre ces extrêmes, une image éclaircira l'image de destination de la quantité indiquée. Notez qu'une composition 'Screen' ne fait qu'éclaircir une image, jamais l'assombrir. C'est un style de composition connu sous le nom de composition « Dodge » (éclaircissement). (Voir Méthodes de composition d'éclairage ci-dessous) Cette méthode de composition est parfaite pour superposer du texte blanc sur un fond noir, puis sur d'autres images... |

  magick -background black -fill white label:Rose label_black.gif
  magick composite -compose Screen -gravity center \
            label_black.gif  rose: compose_screen.gif

[IM Output]
[IM Output]
Voir Masquage mathématique pour un exemple d'utilisation de cette méthode afin de superposer une forme blanche sur une image. [IM Output]

Bumpmap (multiplication en niveaux de gris)

La méthode '[Bumpmap](#bumpmap)' est essentiellement identique à '[Multiply](#multiply)', sauf que l'image source est convertie en niveaux de gris avant d'être superposée. Autrement dit, elle assombrit l'image partout où l'image source est sombre. On peut la considérer comme un opérateur de type « multiplication par l'intensité ». Par exemple... |

  magick composite -compose Bumpmap -gravity SouthEast -geometry +3+3 \
            hand_point.gif   cyclops.gif   -alpha Set   compose_bumpmap.gif

[IM Output]
Notez comment l'image "hand_point.gif" est convertie en niveaux de gris avant l'application. Son objectif initial est d'ajouter une texture (comme une texture de papier ou de tissu) aux images. Cependant, comme elle ne peut qu'assombrir les images, elle n'est pas aussi utile que la méthode '[HardLight](#hardlight)' qui peut à la fois éclaircir et assombrir les images (voir ci-dessous). [IM Output]

Divide, Divide_Dst, Divide_Src ( ) (suppression des effets d'ombrage)

Les deux images sont divisées l'une par l'autre. Laquelle divise l'autre dépend de l'application de 'Divide_Src' ou de 'Divide_Dst'. La formule pour 'Divide_Dst' est _Src_ / _Dest_ et pour 'Divide_Src' est _Dest_ / _Src_ En raison de l'ordre des images normalement défini dans la composition d'images, et de la commande "magick composite, la méthode d'origine 'Divide signifiait...

**{_Source_} Divide {_background_}**


****

C'est-à-dire que le nom de méthode d'origine "Divide' est un synonyme de "Divide_Dst" signifiant « diviser par la destination ». C'est aussi l'opérateur utilisé pour définir le graphique en dégradé affiché. Notez que l'ordre des images est très important, car vous obtenez des résultats très différents si les images, ou l'opérateur, sont inversés. C'est particulièrement le cas avec la commande "magick", qui place l'image de destination avant l'image source. Rappelez-vous que c'est l'image de destination qui définit la taille finale réelle, ainsi que les métadonnées de la composition résultante des deux images. Rappelez-vous également que c'est l'image source qui est positionnée par rapport à l'image de destination. Cette méthode de composition est surtout utile en pratique pour la Suppression du vignettage sur les photographies. Dans l'exemple suivant, je l'utiliserai comme moyen de suppression de l'arrière-plan.
Comme on utilise des valeurs de couleur normalisées qui vont normalement de 0.0 (noir) à 1.0 (blanc), la division éclaircira en fait l'image du numérateur, de la quantité de « noir » présente dans l'image par laquelle vous « divisez ». Or diviser des images, de sorte que l'image « numérateur » (celle qui n'est pas spécifiée par l'opérateur) soit éclaircie, peut sembler étrange. C'est pourtant une opération très utile. Elle permet de supprimer efficacement les taches sombres d'une image causées soit par le vignettage de l'objectif, une mauvaise numérisation, ou une teinte due à l'âge. Par exemple, j'ai une image de texte manuscrit qui a été numérisée assez grossièrement (avec un appareil photo numérique sans flash, puis réduite en taille pour éliminer le bruit numérique). Le papier a des bords décolorés, et comme aucun flash n'a été utilisé, l'arrière-plan est très sombre et présente des effets d'ombrage parce que le papier n'était pas complètement plat.

[IM Output]

Le simple fait de normaliser l'image pour en accentuer le contraste ne permet pas de supprimer la coloration des bords ni les autres effets d'ombrage.

  magick text_scan.png -normalize text_scan_norm.png

[IM Output]

Cependant, en floutant l'image pour en supprimer les lignes, puis en divisant ce flou par l'original, on supprime efficacement tous les effets d'ombrage grossiers de l'image.

  magick text_scan.png \( +clone -blur 0x20 \) \
          -compose Divide_Src -composite  text_scan_divide.png

[IM Output]

Le résultat de la division est que la couleur d'arrière-plan devient blanche, tandis que les fines lignes du texte restent nettes, bien que légèrement « plus fines ». Comme vous pouvez le constater, c'est bien plus net que la simple normalisation, même si une partie de l'anticrénelage a également été supprimée. On aurait pu apporter quelques ajustements supplémentaires à l'image diviseur, mais on est très proche de ce qui est attendu. L'utilisation de flous plus petits peut fournir un autre moyen de générer des images de contours artistiques, comme le montre Coloriage d'images de contours. Cet opérateur pourrait être combiné à un générateur de dégradé d'arrière-plan, tel que Dégradés Sparse Color, pour générer de meilleures images « diviseur » d'arrière-plan qu'un simple flou de l'ensemble de l'image.
Les opérateurs de division sont en fait similaires à la méthode de composition '[Color_Dodge](#colordodge)', mais avec l'image diviseur inversée et utilisée comme image source. C'est la composition typiquement utilisée dans Photoshop, mais elle peut vous obliger à Échanger et Négativer les images. Voir '[Color_Dodge](#colordodge)' pour les équivalences. | Avant IM v6.6.8-5, seule la méthode d'origine '[Divide](#divide)' était fournie (équivalente à la plus récente '[Divide_Dst](#dividedst)').
---|---
[IM Output]

Plus ( ) (additionner les couleurs pour former un mélange)

Additionne les couleurs de la superposition à celles de l'arrière-plan. Cela revient essentiellement à mélanger les deux images à parts égales. Sa formule est naturellement : _Src_ + _Dest_ Notez cependant que si les couleurs additionnées dépassent les limites de couleur, la couleur sera écrêtée par les limites normales de la plage de couleurs. C'est pourquoi la moitié de l'image dans le dégradé résultant est d'un blanc pur, ces valeurs ayant été écrêtées à leur valeur maximale. Il est recommandé de faire attention à ce que l'image résultante ne soit pas écrêtée si ce n'est pas souhaité. L'opérateur a plusieurs usages majeurs. Fusionner des images qui contiennent des couleurs de canal distinctes, mais où seul le canal individuel possède une couleur. Par exemple...

  magick -size 60x60 xc:none -fill red \
          -draw 'circle 30,21 30,3'   compose_R.png
  magick -size 60x60 xc:none -fill lime \
          -draw 'circle 39,39 36,57'  compose_G.png
  magick -size 60x60 xc:none -fill blue \
          -draw 'circle 21,39 24,57'  compose_B.png
  magick composite -compose plus  compose_R.png compose_G.png  compose_plus_RG.png
  magick composite -compose plus  compose_R.png compose_B.png  compose_plus_RB.png
  magick composite -compose plus  compose_G.png compose_B.png  compose_plus_GB.png
  magick composite -compose plus  compose_R.png compose_plus_GB.png \
            compose_plus_RGB.png

[IM Output] [IM Output] [IM Output]
[IM Output] [IM Output] [IM Output] [IM Output]

| En raison de la conformité d'IM au standard SVG, le 'green' (vert) n'est pas une vraie couleur verte (comme dans les noms de couleurs X11) mais un vert sombre ou à demi-intensité. Un vrai vert RGB peut être spécifié avec la couleur 'lime' comme nous l'avons fait dans l'exemple ci-dessus.
---|---
Il est également utilisé comme opérateur mathématique pour additionner des images en dégradé distinctes. Par exemple pour calculer une Image de différence « manhattan », ou dans les Mathématiques sur dégradés. '[Plus](#plus)' est parfois utilisé pour ajouter du texte blanc à une image. Ce n'est PAS un usage correct, et cela peut entraîner des incohérences d'anticrénelage. La meilleure méthode consiste à utiliser la méthode de composition '[Screen](#screen)'. Celle-ci utilise une multiplication plutôt qu'une méthode additive pour augmenter la luminosité. La Méthode de composition Linear Dodge est équivalente à '[Plus](#plus)', mais utilise le fondu alpha '[Over](#over)' plus habituel.

Plus et le fondu Plus

Ce qui rend '[Plus](#plus)' plus important, c'est qu'il s'agit à peu près du seul opérateur mathématique qui met en œuvre une fonction de fondu différente du fondu '[Over](#over)'. Non seulement il « additionne » les couleurs, mais il « additionne » aussi les valeurs du canal alpha, et il est à peu près le seul opérateur à le faire par défaut. C'est important, car cela permet la jonction correcte d'images masquées complémentaires. Voir par exemple la fusion des images Dst In et Out. Cela vous permet aussi d'utiliser la transparence pour générer une moyenne pondérée ou un Fondu de deux images. Sans cette méthode de fondu particulière de '[Plus](#plus)', ces techniques spéciales de gestion de la transparence ne seraient normalement pas possibles.
Depuis IM v6.6.1-6, la possibilité d'utiliser l'opérateur mathématique sur les canaux alpha a été ajoutée à toutes les Méthodes de composition mathématiques, simplement en supprimant l'indicateur 'Sync' par défaut du réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" (il suffit de spécifier les canaux précis auxquels vous souhaitez l'appliquer). Voir Mathématiques sur les canaux d'image par composition ci-dessous. Cela signifie que l'opérateur '[Plus](#plus)' est le seul opérateur des Méthodes de composition mathématiques non affecté par cette fonctionnalité, car il est déjà appliqué par défaut.
[IM Output]

Minus, Minus_Dst, Minus_Src ( )

Le résultat est une image soustraite de l'autre. Laquelle est soustraite de l'autre dépend de l'application de 'Minus_Src' ou de 'Minus_Dst'. Plus précisément, 'Minus_Dst' signifie « soustraire la destination » ou, appliqué dans une commande "magick composite".... La formule pour... 'Minus_Dst' est _Src_ - _Dest_ et pour 'Minus_Src' est _Dest_ - _Src_ En raison de l'ordre des images normalement défini dans la composition d'images, et de la commande "magick composite, la méthode d'origine 'Minus signifiait...

**{_Source_} Minus {_background_}**


****

C'est-à-dire que le nom de méthode d'origine "Minus' est un synonyme de "Minus_Dst" signifiant « moins la destination ». C'est aussi l'opérateur utilisé pour définir le graphique en dégradé affiché. Par exemple, soustrayons un cercle du résultat final de l'opération '[Plus](#plus)' précédente. |

  magick composite compose_plus_RGB.png  -compose minus_dst  compose_R.png \
            compose_minus.png

[IM Output]
Notez la manière dont le canal alpha est géré, qui est la même que pour tous les autres opérateurs mathématiques sauf '[Plus](#plus)'. Voir Composition mathématique et fondu alpha. Cette gestion peut être modifiée par l'utilisation d'un indicateur de canal 'Sync' spécial. Voir Mathématiques sur les canaux d'image ci-dessous pour plus de détails. La méthode de composition '[Linear Burn](#linearburn)' peut aussi servir à la soustraction de couleurs, mais elle fonctionne en faisant en sorte que l'utilisateur négative l'image à soustraire. Voir la Méthode de composition Linear Burn pour plus de détails. | Avant IM v6.6.8-5, seule la méthode d'origine '[Minus](#minus)' était fournie (équivalente à la plus récente '[Minus_Dst](#minusdst)').
---|---
[IM Output]

ModulusAdd

'[ModulusAdd](#modulus_add)' ressemble beaucoup à '[Plus](#plus)', sauf que lorsque le résultat dépasse le blanc, il est ramené (modulo) vers le noir. Par exemple, si nous additionnons deux dégradés en niveaux de gris, les couleurs les plus claires reviendront en boucle pour former un second dégradé. |

  magick -size 60x60 gradient:    gradient.png
  magick composite  gradient.png gradient.png -compose ModulusAdd  compose_add.png

[IM Output]
Ce type de composition par modulo peut être utilisé pour produire des dégradés très intéressants, comme par exemple. |

  magick composite gradient.png \( gradient.png -rotate -90 \) \
            -compose ModulusAdd   gradient_diagonal.png

[IM Output]
Et des additions par modulo multiples peuvent créer des dégradés répétés de type store vénitien. |

  magick gradient.png \( +clone +clone +clone +clone \) \
          -background gray50 -compose ModulusAdd -flatten  gradient_venetian.png

[IM Output]
Ce qui produit un dégradé répété 5 fois. Notez comment j'utilise un arrière-plan 'gray50' pour « décaler » efficacement le dégradé d'un demi-cycle de modulo vers l'avant. [IM Output]

ModulusSubtract

L'opérateur '[ModulusSubtract](#modulus_subtract)' est identique à '[Minus](#minus)', sauf qu'il s'agit d'une soustraction par modulo. Soustraire le 'blanc' du 'gris' donnera le 'gris' d'origine, et non du noir, car les valeurs reviennent en boucle. Un effet secondaire de la soustraction par modulo est que certaines parties peuvent devenir blanches au lieu de noires, de façon apparemment incontrôlée. |

  magick composite -compose subtract  compose_plus_RGB.png  compose_R.png \
            compose_subtract.png

[IM Output]
Effectuer un '[ModulusAdd](#modulus_add)' avec une Image inversée produira le même résultat. [IM Output]

Difference (comparaison d'images, et négation sélective)

L'image résultante est la différence absolue des valeurs de couleur. Sa formule est : abs(_Src_ - _Dest_) La différence entre 'black' et 'white' produira un résultat maximal de blanc, tandis que toutes les couleurs identiques produiront du noir. Il s'agit essentiellement d'une forme simple de comparaison d'images. L'usage le plus courant de cette méthode de composition consiste à comparer deux images de même taille pour voir en quoi elles diffèrent, et même produire un pourcentage de cette différence. Cet opérateur est généralement utilisé pour générer des Images de différence de comparaison. L'opérateur peut aussi servir à inverser sélectivement une image. Superposer du noir n'a aucun effet sur l'arrière-plan, tandis que superposer du blanc inverse les couleurs de l'image à cet endroit. Autrement dit, cet opérateur (ainsi que le suivant) fournit un opérateur de Négation piloté par une image. Négativons par exemple la moitié de l'image de la rose. |

  magick -size 2x1 pattern:gray50  -scale 70x50\! black_n_white.gif
  magick composite black_n_white.gif   rose: \
            -gravity center -compose difference   compose_negate.gif

[IM Output]
[IM Output]

[IM Output]

Exclusion (différence d'images en excluant les gris)

Sa formule est : _Src_ + _Dest_ - 2*_Src_ *_Dest_ C'est en quelque sorte une différence moyennée. Blanc sur blanc produira du noir (aucune différence), de même que noir sur noir. En revanche, gris sur gris produira un résultat gris. Le blanc et le noir produisent naturellement toujours du blanc (différence maximale). Une autre façon de voir cela est que les régions claires de l'image provoquent une inversion de l'autre couche correspondante. Les régions très sombres ne changent rien du tout. En ce sens, la méthode Exclusion est identique à '[Difference](#difference)' (voir précédemment). Un usage de cet opérateur consiste à multiplier des « dégradés biaisés » tels que ceux utilisés pour les Cartes de déplacement. Ce sont des dégradés dans lesquels une valeur de gris à 50 % est considérée comme « zéro », les couleurs plus sombres représentant une valeur « négative » et les couleurs plus claires une valeur « positive », les valeurs allant de -1 à +1. Voir Multiplier des dégradés biaisés, pour plus de détails. Un autre usage de cette méthode de composition, proposé par Joe Fry, est un moyen de fusionner plusieurs images de différence entre elles. L'image finale montre les changements de toutes les images, et non seulement entre deux images. Autrement dit, étant donné les images A, B et C, on génère d'abord les images de différence pour A, B et B, C, puis on utilise l'exclusion sur ces résultats afin d'obtenir une seule image montrant comment les trois images ont changé. Cette méthode est aussi étroitement liée à la façon dont l'opérateur de fondu de composition Xor gère les valeurs de transparence alpha. [IM Output] [IM Output]

Lighten et Darken (sélectionner la valeur maximale/minimale)

Compare les valeurs de couleur des images source et destination et prend respectivement la valeur la plus claire ou la plus sombre. La formule pour Lighten est : Si _Src_ > _Dest_ alors _Src_
sinon _Dest_
Pour l'assombrissement, il suffit d'inverser la comparaison.

Un usage de '[Lighten](#lighten)' consiste à composer une version floutée de l'image d'origine pour que les « hautes lumières » de l'image d'origine reçoivent une lueur douce autour d'elles.

  magick flower_sm.jpg \( +clone -blur 0x3 \) \
          -compose Lighten -composite  flower_softglow.jpg

[IM Output] [IM Output]

Voir Flou doux pour une meilleure méthode (utilisant une « technique de flou fondu »), afin d'obtenir un résultat similaire de meilleure qualité.
Ces opérateurs fonctionnent en comparant et en sélectionnant les valeurs individuelles des canaux RGB, ce qui peut entraîner une certaine distorsion des couleurs, en particulier lorsqu'on traite des couleurs primaires de l'image. Par exemple, j'ai créé ici une image en dégradé rouge et bleu, puis j'utilise lighten pour les composer ensemble.

  magick -size 100x100 gradient:red-black -rotate 90  red_gradient.png
  magick -size 100x100 gradient:blue-black            blue_gradient.png

  magick red_gradient.png blue_gradient.png \
          -compose Lighten -composite   lighten_by_value.png

[IM Output] [IM Output] [IM Output]

Comme le canal bleu est nul dans l'image de dégradé rouge, et inversement, et que la composition '[Lighten](#lighten)' fonctionne selon les valeurs de couleur, le résultat est simplement une fusion des images rouge et bleue, produisant une image de dégradé rouge-bleu. Autrement dit, ce qui précède équivaut à une simple Composition par copie de canal. Une méthode pour prévenir les distorsions de couleur consiste à restreindre l'opérateur à l'ajustement du seul canal 'Lightness' (luminosité) de l'image en utilisant l'Espace colorimétrique HSL. Cela ne produit toutefois pas toujours de bons résultats. | _Notez que "Gimp", "Photoshop", "PhotoLine", "Paint Shop Pro", comparent tous les canaux directement, tout comme IM.

"Photo-Paint" compare les images par intensité de couleur et s'en sert pour décider de quelle image sélectionner les couleurs, préservant ainsi l'intégrité des couleurs. Voir Méthode Lighten-Intensity ci-dessous.

En revanche, "Picture Publisher" et "PhotoImpact" utilisent la clarté de la couleur (telle que définie par l'espace colorimétrique HSL) pour la comparaison.

Pour des comparaisons de la différence en niveaux de gris à partir de divers espaces colorimétriques, voir l'exemple Conversion en niveaux de gris via l'espace colorimétrique.

_
---|---
[IM Output] [IM Output]

Lighten-Intensity et Darken-Intensity (sélectionner la couleur par intensité)

Depuis IM v6.6.9-5, une variante 'Lighten_Intensity' et 'Darken_Intensity' a été ajoutée. Elle compare l'intensité des pixels dans les deux images, puis sélectionne les valeurs de pixel en fonction de ce résultat. Cela signifie qu'aucune nouvelle couleur ne sera ajoutée aux images, bien que la nouvelle image soit un mélange des couleurs des deux images. De plus, l'ordre des images n'a pas d'importance, si ce n'est que la taille et les métadonnées proviennent de l'image de destination. Par exemple, prenons ici la plus claire des images contenant un dégradé rouge et bleu.

  magick red_gradient.png blue_gradient.png \
          -compose Lighten_Intensity -composite   lighten_intensity.png

[IM Output] [IM Output] [IM Output]

Comme vous pouvez le voir, le pixel entier a été sélectionné à partir de l'image choisie. Vous n'obtiendrez aucun mélange des canaux de couleur. Cependant, comme l'intensité du bleu est considérée comme plus sombre que celle du rouge, seuls les rouges les plus sombres sont remplacés par ceux de l'image de dégradé bleu plus sombre. Cette méthode de composition n'est pas définie par leguide de composition SVG (2009) utilisé par toutes les méthodes de composition que nous avons examinées jusqu'ici. En conséquence, il n'existe pas de véritable définition de la manière dont le canal alpha devrait affecter la comparaison des pixels.

En ce qui concerne l'alpha , la méthode a deux modes de fonctionnement. Avec l'indicateur 'Sync' spécial du réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" activé (le comportement par défaut), la comparaison sera basée sur l'intensité des couleurs, pondérée par le canal alpha (transparence). Cela signifie qu'un 'blanc à demi-transparent' aura une intensité pondérée à peu près équivalente à celle d'une couleur 'gris moyen opaque'.

Cela signifie que, toutes choses égales par ailleurs, un '[Lighten_Intensity](#lighten_intensity)' créera une « union » de formes d'images, tandis que '[Darken_Intensity](#darken_intensity)' créera une « intersection » de formes d'images (du moins non noires). Ce n'est PAS idéal, et cela peut changer, mais c'est préférable à l'absence de prise en compte de l'alpha.

Le second mode de fonctionnement sera utilisé si vous désactivez l'indicateur de canal 'Sync' (voir Utilisation de l'indicateur 'Sync' ci-dessous). Par exemple en utilisant "-channel All". La sélection des pixels sera alors basée purement sur l'intensité des couleurs, sans aucun effet de pondération par l'alpha. Cependant, la valeur du canal alpha sera copiée avec les données du pixel effectivement sélectionné. Pour les images sans transparence, le résultat sera identique quel que soit le mode. Ce second mode permet aussi d'utiliser un réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" plus restreint définissant quels canaux peuvent être copiés de la source vers l'image de destination, si sélectionnés. La sélection restera toutefois purement basée sur la seule intensité de couleur non pondérée. Cela signifie que vous pouvez plus facilement créer un « masque de forme » de la sélection, basé sur l'intensité des couleurs dans les deux images. Vous comparez les images selon l'intensité de couleur, mais ne vous souciez que de la valeur du canal alpha dans le résultat. Pour créer un « masque », vous rendriez une image entièrement transparente (tout en conservant sa couleur), en utilisant Alpha Transparent, et l'autre image entièrement opaque (le comportement par défaut). À la fin, vous pouvez utiliser Alpha Extract pour obtenir le masque indiquant quelle image avait la couleur la plus claire pour cette position de pixel. |

  magick red_gradient.png -alpha transparent    blue_gradient.png \
          -compose Lighten_Intensity -composite \
          -alpha extract    lighten_intensity_mask.png

[IM Output]
Notez que les valeurs alpha dans les deux images n'ont pas à être uniquement 'activées' et 'désactivées', mais peuvent être fixées à une valeur de 'référence'. Cela signifie que vous pourriez avoir toute une séquence d'images, chacune avec une valeur de canal alpha différente. Vous pouvez alors utiliser cette méthode de composition pour comparer toutes les images entre elles, et obtenir une carte indiquant quelle image contenait le pixel le plus clair (ou le plus sombre) à chaque emplacement de l'image. Autrement dit, les méthodes de composition par intensité peuvent servir de sorte d'opérateur de « sélection » ou de « comparaison » pour une longue liste d'images. | Ajouté depuis IM v6.6.9-5. Mais aucune définition formelle de la méthode n'a été trouvée. En conséquence, l'implémentation actuelle est classée commehautement expérimentale , et peut changer selon les suggestions des utilisateurs. L'idée essentielle est toutefois solide.
---|---

Alternative à Intensity pour les anciennes versions d'IM

Si la méthode '[Lighten_Intensity](#lighten_intensity)' n'est pas disponible dans votre version d'ImageMagick, vous pouvez recréer une version pure, uniquement basée sur la couleur, en utilisant '[Lighten](#lighten)' sur des copies en niveaux de gris des deux images, et en comparant le résultat à la copie en niveaux de gris, afin de créer un masque de sélection à appliquer sur l'original. Ce n'est pas facile, et voici l'une de ces solutions... |

  magick red_gradient.png blue_gradient.png \
          \( -clone 0--1 -colorspace Gray \
             \( -clone 0--1 -compose Lighten -composite \) \
             -delete 1 -compose Difference -composite -threshold 0 \
          \) -compose Src -composite     intensity_lightened.png

[IM Output]
C'est un traitement assez horrible, mais comme vous pouvez le constater, il fonctionne. Pour obtenir une version '[Darken_Intensity](#darken_intensity)', remplacez le "-delete 1" par "-delete 0", OU remplacez "-compose Lighten" par "-compose Darken". L'un ou l'autre fonctionnera.

Opérations équivalentes de la théorie des ensembles

Un certain nombre des méthodes mathématiques ci-dessus sont aussi utilisées pour effectuer des opérations de théorie des ensembles ou booléennes sur des formes. La méthode de composition '[Lighten](#lighten)' peut servir à trouver l'« Union » (le 'Ou ' booléen) de deux groupes (ensembles) de pixels ou plus.

  magick -size 64x64 xc: -draw 'circle 22,32 5,32'  -negate circle_left.gif
  magick -size 64x64 xc: -draw 'circle 41,32 58,32' -negate circle_right.gif
  magick circle_left.gif circle_right.gif \
          -compose Lighten -composite    circle_union.gif

[IM Output] [IM Output] [IM Output]

La méthode de composition '[Darken](#darken)' produit une « Intersection » (le 'Et ' booléen) des pixels.

  magick circle_left.gif circle_right.gif \
          -compose Darken -composite    circle_intersection.gif

[IM Output] [IM Output] [IM Output]

La méthode de composition '[Difference](#difference)' produit un « OU exclusif » (le 'XOR ' booléen) des deux ensembles.

  magick circle_left.gif circle_right.gif \
          -compose Difference -composite    circle_disjunction.gif

[IM Output] [IM Output] [IM Output]

Une méthode '[Exclusion](#exclusion)' aurait aussi pu être utilisée à cette fin, bien qu'elle gère différemment les valeurs en niveaux de gris (non booléennes). C'est toutefois la méthode utilisée pour le fondu alpha Duff-Porter '[XOR](#xor)'. Enfin, '[Minus](#minus)' peut servir à générer le « Complément relatif » de deux ensembles de pixels.

  magick circle_left.gif circle_right.gif \
          -compose Minus_Src -composite    circle_complement.gif

[IM Output] [IM Output] [IM Output]

Notez qu'un "[-clamp](https://imagemagick.org/command-line-options/#clamp)" peut être nécessaire pour les versions HDRI d'ImageMagick lors de l'application de l'une des méthodes de composition « ensembliste » ou « booléenne » ci-dessus, afin d'éviter la génération de valeurs hors plage.

Composition mathématique et fondu alpha

Vous pouvez utiliser les méthodes de composition mathématiques ci-dessus pour effectuer des opérations mathématiques sur les images. Il y a cependant un bémol majeur à cela. Cela ne fonctionnera probablement pas comme vous le souhaiteriez avec des images contenant de la transparence. Par défaut, presque toutes les compositions mathématiques ci-dessus suivent une convention définie par la spécification SVG. Guide de composition SVG (2009). Cela signifie que si vous tentez d'utiliser des compositions mathématiques sur des images comportant un canal alpha (c'est-à-dire une certaine forme de transparence), vous pourrez ne pas obtenir une véritable composition mathématique, mais une forme « fondue » de composition. Par exemple, je crée ici des images en dégradé avec une certaine transparence autour d'elles. Je les '[Multiply](#)' ensuite ensemble.

  magick -size 64x64 xc:none -draw 'rectangle 20,0 43,63' \
          gradient: -compose In -composite    alpha_src.png
  magick alpha_src.png -transverse     alpha_dst.png
  magick alpha_dst.png  alpha_src.png \
          -compose Multiply -composite  alpha_result.png

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Résultat
---|---|---|---|---

Notez que les parties des images qui ne se chevauchaient pas ont simplement été incluses telles quelles dans l'image résultante, sans modification. Autrement dit, les images ont été « fondues ensemble ». Pire encore, si l'image contient des transparences partielles, les valeurs de couleur seront « pondérées » par le canal alpha. C'est utile pour une Composition Plus, fournissant une « addition de couleur pondérée » ou une Opération de fondu, mais je n'ai pour l'instant trouvé aucun usage à une « multiplication pondérée des couleurs » dans les images. Quelqu'un ? Si vous faites des mathématiques sur les images, ce comportement n'est généralement pas souhaitable. Cependant, lorsqu'on fait de telles mathématiques, on n'a généralement pas non plus de canal alpha, si bien que les problèmes de « fondu alpha » et de « couleur pondérée » se posent rarement. | _LaComposition Plus est la seule Méthode de composition mathématique qui ne fait pas de « fondu alpha over ». Au lieu de cela, conformément à la Spécification SVG, elle additionne chaque canal séparément. Cependant, les canaux de couleur sont toujours pondérés par la valeur alpha avant d'être additionnés ; seule la gestion des valeurs alpha (le fondu) diffère.

C'est important pour fournir une « addition » correcte des formes masquées, comme le montre la Composition DstOut._
---|---

Mathématiques sur les canaux d'image par composition

Si les images sur lesquelles vous utilisez une Méthode de composition mathématique sont simplement des images en niveaux de gris entièrement opaques, vous pouvez leur appliquer directement les méthodes ci-dessus, sans aucun problème. Cependant, par défaut, les méthodes de composition s'appliqueront à tous les canaux de couleur, avec fondu alpha, tout comme vous l'avez vu ci-dessus. Cela rend difficile leur application à un seul canal spécifique, comme le canal alpha. Par exemple, je '[Multiply](#multiply)' ici deux images noires contenant un dégradé transparent. En utilisant le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" par défaut.

  magick -size 64x64 gradient:black-none   alpha_grad_src.png
  magick alpha_grad_src.png -transverse   alpha_grad_dst.png
  magick alpha_grad_dst.png  alpha_grad_src.png \
          -compose Multiply -composite  alpha_grad_result.png

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Résultat
---|---|---|---|---

Notez que multiplier 'Black' par 'Black' donne 'Black', donc la couleur ne change pas dans cet exemple. Seule la transparence résultante est modifiée. Cependant, le résultat n'est décidément pas une multiplication des valeurs du canal alpha des images, car selon la Définition SVG les semi-transparences sont fondues à l'aide de la méthode 'over'. Cela équivaut mathématiquement à une composition '[Screen](#screen)' du canal alpha, et non à une multiplication.

Indicateur de canal Sync et composition mathématique

Depuis IM v6.6.1-6, les Méthodes de composition mathématiques ont été modifiées pour respecter l'indicateur 'Sync' du réglage "[-channel](https://imagemagick.org/command-line-options/#channel)". Cet indicateur signifie en pratique « synchroniser les opérations sur les canaux de couleur et alpha ». Le réglage "[-channel](https://imagemagick.org/command-line-options/#channel)" par défaut est 'RGBK,Sync'. Ainsi, par défaut, les canaux de couleur et alpha sont traités de manière appropriée, « en synchronie », conformément à la spécification SVN. Cependant, en supprimant l'indicateur 'Sync', les Méthodes de composition mathématiques deviendront des « opérateurs de canal » appliquant la fonction mathématique à chaque canal, séparément. |

  magick alpha_grad_dst.png  alpha_grad_src.png \
          -channel RGBA  -compose Multiply -composite  alpha_grad_nosync.png

[IM Output]
Et ceci est une multiplication correcte du canal alpha.
Tout ceci ne s'applique qu'aux Méthodes de composition mathématiques (détaillées ci-dessus) ainsi qu'à la méthode de composition spéciale '[Mathematics](#mathematics)' (voir ci-dessous). Cela ne s'applique pas aux autres méthodes de composition, telles que les Méthodes de composition d'éclairage (voir la suite). Du moins pas encore. L'indicateur 'Sync' affecte aussi la façon dont la Méthode de composition Lighten/Darken par intensité (qui n'est pas une méthode de composition définie par SVG) gère le canal alpha (ci-dessus). Pour plus d'informations sur l'utilisation des mathématiques sur les images, voir Mathématiques sur les dégradés. Plus précisément, ces exemples s'intéressent à l'utilisation des compositions mathématiques pour générer des Images en dégradé biaisées , ce qui est un peu plus complexe.


Méthodes de composition d'éclairage -- Light, Dodge, Burn

Ces méthodes modifient les couleurs d'une image de manière très complexe et servent généralement à ajuster l'ombrage ou l'intensité de l'image, en rendant certaines zones plus claires et d'autres plus sombres.

Les méthodes de composition d'éclairage se répartissent en trois sous-catégories d'opérateurs apparentés.
'Burn ', qui assombrit généralement les images.
'Dodge ', qui éclaircit généralement les images.
'Light ', qui à la fois assombrit et éclaircit les images selon l'obscurité et la luminosité de l'une des images.

'[Multiply](#multiply)' (assombrit les couleurs) est généralement considéré comme une opération de composition 'Burn ' pure, tandis que '[Screen](#screen)' (éclaircit) est un opérateur de composition 'Dodge '. En général, l'une des images est un motif de couleur ou une photo, tandis que l'autre est une image en niveaux de gris utilisée pour éclaircir ou assombrir l'image de manière appropriée. Quelle image doit être la couleur et laquelle les niveaux de gris est discutable et dépend de la manière dont la méthode a été implémentée. Il n'existe aucune norme à ce sujet, la prudence et l'expérimentation sont donc recommandées. En conséquence de l'absence de normes pour ces opérateurs, de nombreux utilisateurs ne comprennent pas ou utilisent mal ces opérateurs. Je n'ai en outre pas encore trouvé de guide sur l'utilisation correcte de ces méthodes de composition, qui est pratiquement inexistant, j'ai donc dû faire de mon mieux avec les exemples ci-dessous. [IM Output]

Overlay (ajouter de la couleur à un objet en niveaux de gris)

Cette méthode de composition est très inhabituelle en ce qu'elle a été conçue pour à la fois '[Multiply](#multiply)' (assombrir) et '[Screen](#screen)' (éclaircir) une image en même temps. La méthode appliquée à un pixel donné est sélectionnée par la valeur de l'image de destination, que l'on peut considérer comme le « masque d'éclairage ». C'est pourquoi la destination est généralement une image en niveaux de gris, à laquelle on ajoute de la couleur. Sa formule est : Si _Dest_ <= 0.5 alors 2*_Src_ *_Dest_
sinon 1-2*(1-_Src_)*(1-_Dest_)
Le résultat est une méthode de composition spéciale qui préserve tout blanc et noir purs (les hautes lumières) présents dans l'image de destination tout en teintant les gris de tons moyens de cette image avec les couleurs trouvées dans l'image de superposition. Autrement dit, à partir d'une image en niveaux de gris comme destination, cet opérateur colore cet arrière-plan à l'aide de l'image source tout en préservant les effets d'ombre et de hautes lumières présents dans la destination.
  magick -size 64x64 gradient:yellow-blue gradient_yell-blue.jpg
  magick -size 64x64 gradient: -rotate 90 gradient_grey.jpg

  magick gradient_grey.jpg   gradient_yell-blue.jpg \
          -compose Overlay  -composite   compose_overlay_gradients.jpg

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Résultat
---|---|---|---|---

Comme vous pouvez le voir, les gris de tons moyens de l'image de dégradé ont été colorés avec les couleurs de l'image fournie. Et c'est là l'usage normal de la méthode de composition : ajouter de la couleur à un masque d'éclairage en niveaux de gris. Cette méthode, contrairement à '[Multiply](#multiply)' ou '[Screen](#screen)', n'est pas associative.

  magick gradient_yell-blue.jpg  gradient_grey.jpg \
          -compose Overlay   -composite   compose_overlay_gradients2.jpg

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Résultat
---|---|---|---|---

Cette « superposition de couleur » dans une image de hautes lumières grises rend cette méthode parfaite pour ajouter de la couleur à la sortie de l'opérateur « [-shade](https://imagemagick.org/command-line-options/#shade) ». Vous devez toutefois faire très attention à générer un gris de tons moyens parfait à partir de cet opérateur, afin d'obtenir une coloration correcte dans les zones sans aucune haute lumière. Voir Hautes lumières de superposition Shade pour plus de détails. Par exemple, à partir d'un cercle, nous pouvons l'ombrer pour produire des effets tridimensionnels puis teinter le résultat avec l'image d'origine afin de restaurer les couleurs d'origine.

  magick -size 64x64  xc:dodgerblue \
          -draw 'fill skyblue   circle 32,32 7,27'  circle_blue.jpg
  magick circle_blue.jpg -shade 120x30 -auto-level circle_shaded.jpg
  magick circle_shaded.jpg  circle_blue.jpg \
            -compose Overlay -composite   circle_shaded_tinted.jpg

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Résultat
---|---|---|---|---

Pour un exemple plus concret d'utilisation de la méthode '[Overlay](#overlay)', voir l'image « levels_3d » sur la page Exemples de générateur d'arrière-plans. Le plus gros problème de cette méthode de composition est que toute transparence présente dans l'une ou l'autre image ne sera pas préservée. Autrement dit, ce qui est visible dans l'une ou l'autre image sera visible dans le résultat. Cet opérateur s'utilise typiquement sur des images qui ne contiennent aucune transparence ; il vous faudra généralement effectuer quelques étapes supplémentaires pour restaurer la transparence de l'image de destination ou d'arrière-plan. Un moyen simple de préserver la transparence consiste à simplement désactiver le canal alpha de l'image de destination, et donc à le rendre inaccessible. Une fois la composition terminée, vous pouvez le réactiver. Un exemple de ceci est donné dans Images de formes ombrées. Une autre méthode consiste à sauvegarder un « masque », ou une copie de l'image d'origine, puis à utiliser ce masque ou cette image pour restaurer la transparence. Des exemples de cette approche sont fournis dans Teinture de couleur par Overlay. Ou dans l'exemple plus complexe Meilleure génération de logos 3D. Jusqu'à la version IM 6.1.6, la méthode de composition « Overlay » était défectueuse en ce qu'elle ne produisait que des résultats noir ou blanc purs (le plus souvent, vous n'obteniez qu'un résultat noir pur). Par conséquent, la plupart des utilisateurs d'IM avaient peu de chances de comprendre cet opérateur. Maintenant que ce problème a été corrigé, les utilisateurs pourront tirer bon parti de cette méthode.
[IM Output]

Hard_Light (ajouter de la texture ou des hautes lumières/ombres à une image)

C'est la même chose que '[Overlay](#overlay)', sauf que les images source et destination sont échangées. Si vous comparez les images de dégradé de ces deux opérateurs, vous pouvez voir que le dégradé est transposé en diagonale, ce qui montre l'échange des entrées source et destination. Sa formule est : Si _Src_ <= 0.5 alors 2*_Src_ *_Dest_
sinon 1-2*(1-_Src_)*(1-_Dest_)
Ainsi, tandis que '[Overlay](#overlay)' peut ajouter de la couleur à un objet ombré en niveaux de gris, '[Hard_Light](#hardlight)' ajoute des effets d'éclairage en niveaux de gris à une image. La méthode que vous utilisez dépend de la façon dont vous concevez l'ajout d'effets d'éclairage à l'image. La différence importante réside dans le choix de l'image « destination » afin de préserver les métadonnées de l'image, voire de désactiver temporairement le canal alpha pour le préserver pendant l'opération. Par exemple, je génère ici un « effet d'éclairage » à l'aide d'une opération « [-raise](https://imagemagick.org/command-line-options/#raise) » floutée sur une image gris pur de la même taille que l'original. Celle-ci est ensuite composée avec '[Hard_Light](#hardlight)' pour ajouter ces effets d'éclairage à l'image.
  magick rose: -fill gray50 -colorize 100% \
          -raise 4 -normalize -blur 0x4  lighting_effect.png
  magick rose: lighting_effect.png \
          -compose hardlight -composite  compose_hardlight.png

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Résultat
---|---|---|---|---

Cette méthode facilite l'ajout à la fois de hautes lumières (comme une lumière réfléchie) ou d'effets d'ombre sombres à une image existante, en une seule opération. Voici un exemple d'ajout direct d'une « texture » d'éclairage à une image. |

  magick rose: \( granite: -blur 0x.5 -normalize \) \
          -compose hardlight -composite compose_texture.png

[IM Output]
Remarquez à quel point le texte obtenu est marqué, submergeant presque l'image d'origine sous des zones claires et sombres. C'est là l'inconvénient de l'utilisation de '[Hard_Light](#hardlight)'. Pour y remédier, vous pourriez atténuer le contraste d'une texture superposée. |

  magick rose: \
          \( granite: -blur 0x.5 -normalize  +level 30,70%  \) \
          -compose hardlight -composite compose_texture_muted.png

[IM Output]
D'autres méthodes de composition d'éclairage, telles que '[Soft_Light](#softlight)', peuvent aussi produire de meilleurs résultats plus directement. Pour un meilleur exemple, voir Superposition d'une texture dans le Livre de recettes photo. Un exemple concret d'utilisation de l'ombrage '[Hard_Light](#hardlight)' est fourni sur les Forums de discussion IM concernant la génération de jaquettes de DVD 3D à partir d'images sources planes. Rappelez-vous que les ombrages '[Overlay](#overlay)' et '[Hard_Light](#hardlight)' sont essentiellement la même méthode de composition. La seule différence est l'ordre des images. [IM Output]

Soft_Light (mise en lumière plus douce d'une image)

La méthode de composition 'Soft_Light ' ajoutera elle aussi des hautes lumières et des ombres à une image couleur existante. Toutefois, les couleurs de l'image de destination sont modifiées de manière à produire un contraste plus doux et un dégradé plus lisse dans les effets d'éclairage. Si vous examinez attentivement l'« image de carte en niveaux de gris » (voir à droite), vous ne verrez aucune discontinuité nette, bien qu'il y en ait en réalité deux. (Voir aussi '[Pegtop_Light](#pegtoplight)' ci-après.) Elle est plus étroitement liée à la composition '[Overlay](#overlay)' qu'à '[Hard_Light](#hardlight)', si bien que la destination est typiquement le masque d'éclairage en niveaux de gris. On ignore si c'est intentionnel ou non, mais cela la distingue bien de '[Hard_Light](#hardlight)' ; en revanche cela signifie que vous avez intérêt à composer l'image principale sur l'image d'ombrage plutôt que l'inverse. :-( | _AVERTISSEMENT : Cet effet d'éclairage est défini plutôt comme '[Overlay](#overlay)' que comme '[Hardlight](#hardlight)'. Cependant, on ne sait pas clairement laquelle doit contenir l'image d'éclairage en niveaux de gris. Utiliser la source peut produire des résultats noir et blanc complets, tandis qu'utiliser la destination ne peut pas produire ces extrêmes.

Si quelqu'un dispose d'une référence définitive, merci de me le faire savoir._
---|---
Par exemple, voici le mapping de texture 'Soft_Light'. |

  magick rose:  \( granite: -blur 0x.5 -normalize \) \
          -compose softlight -composite compose_softlight.jpg

[IM Output]
Comme vous pouvez le voir, même avec une image « granite: » normalisée, les changements de couleur sont plus doux et moins intenses que ceux de '[Hard_Light](#hardlight)', voire de '[Overlay](#overlay)'. Vous n'obtiendrez toutefois jamais d'ombre noir pur ni de haute lumière blanc pur ajoutées à l'image résultante. Fondamentalement, '[Soft_Light](#softlight)' produit un effet de texture plus doux, qui préserve la coloration d'origine de l'image source. Je montre ici les changements de couleur obtenus grâce à l'utilisation de superpositions de couleurs noir pur, blanc et gris parfait. |

  magick -size 1x3 gradient: -sample 70x46\! grayscale_3.gif
  magick composite grayscale_3.gif  rose: -compose softlight  compose_softlight_2.gif

[IM Output]
[IM Output]
Si vous aviez fait cela avec '[Hard_Light](#hardlight)', les côtés de l'image seraient noir et blanc purs, plutôt qu'un simple assombrissement ou éclaircissement de 50 %. | _Avant IM v6.5.4-3, '[Soft_Light](#softlight)' ne fonctionnait pas comme prévu, produisant un éclaircissement pour toute superposition d'image en nuance non grise. En réalité, j'ai confirmé qu'il était implémenté correctement selon la spécification SVG officielle de 2004.

Malheureusement, c'était la spécification, et non l'implémentation, qui était incorrecte. Cela a été corrigé dans la spécification SVG de mars 2009. Ainsi, pour IM v6.5.4-3 et versions ultérieures, cet opérateur fonctionne désormais comme on peut l'attendre d'un opérateur d'ombrage lumineux._
---|---
[IM Output]

Pegtop_Light (une variante plus lisse de soft light)

Bien que '[Soft_Light](#softlight)' soit bien plus lisse que '[Hard_Light](#softlight)' ou '[Overlay](#overlay)', il repose en réalité toujours sur deux fonctions distinctes réunies. La méthode 'Pegtop_Light ' produit un résultat quasi identique à '[Soft_Light](#softlight)' mais utilise une seule fonction lisse sans aucune discontinuité, pas même les deux mineures utilisées par '[Soft_Light](#softlight)'. De ce fait, elle est en réalité bien plus simple et plus rapide. Sa formule est : 2*_Src_ *_Dest_ + _Src_ 2*(1 - 2*_Dest_) Pour plus de détails, voir la page Alternative Pegtop SoftLight. AVERTISSEMENT : Cet effet d'éclairage est défini plutôt comme '[Overlay](#overlay)' que comme '[Hard Light](#hardlight)'.
La méthode de composition '[Pegtop_Light](#pegtoplight)' a été ajoutée à la version IM 6.5.4-3.
--- ---
[IM Output]

Linear_Light (un schéma d'ombrage très simple mais marqué)

Une autre méthode d'ombrage d'image très sensible à l'image d'ombrage superposée. Elle présente des zones de limites noir et blanc purs bien plus étendues. Sa formule est : 2*_Src_ + _Dest_ - 1 Bien qu'il s'agisse d'une fonction continue, on pourrait vraiment la considérer comme une combinaison de '[LinearDodge](#lineardodge)' (équivalent à une composition '[Plus](#plus)') et de '[LinearBurn](#linearburn)' (qui est un « plus » décalé parfois utilisé pour soustraire des images). Avant IM v6.5.4-3, il s'est avéré que '[Linear_Light](#linearlight)' était implémenté de manière incorrecte.
[IM Output]

Vivid_Light (une variante de Linear Light)

La méthode 'Vivid_Light ' est identique à celle implémentée dans Photoshop 7, et constitue essentiellement un léger raffinement de la méthode '[Linear_Light](#linearlight)'. Ce qu'elle fait, c'est éviter d'ombrer les extrêmes, de manière à rendre les couleurs primaires fortes des images plus « vives ». Sa formule est : Si _Src_ <= 0.5 alors 1-(1-_Dest_)/(2*_Src_)
sinon _Dest_ /(2*(1-_Src_))
Une autre manière de voir cela est un mélange de '[Color_Dodge](#colorburn)' et '[Color_Burn](#colordodge)', pour les extrêmes, mais de '[Linear_Light](#linearlight)' pour les tons moyens. La méthode de composition '[Vivid_Light](#vividlight)' a été ajoutée à la version IM 6.5.4-3.
--- ---
[IM Output]

Pin_Light

La fonction 'Pin_Light ' est conçue pour mieux préserver les tons moyens de l'image de destination, en limitant son ombrage à la superposition d'ombrage plus claire et plus sombre. Elle est censée simuler les changements d'éclairage durs et nets qui résultent d'une minuscule source lumineuse ponctuelle, plutôt que d'une source lumineuse plus diffuse et « douce ». Sa formule est : Si _Dest_ < 2*_Src_ -1 alors 2*_Src_ - 1
sinon si _Dest_ > 2*_Src_ alors _Dest_
sinon 2*_Src_
La méthode de composition '[Pin_Light](#pinlight)' a été ajoutée à la version IM 6.5.4-3.
--- ---
[IM Output]

Linear_Dodge (composition « Add » de Photoshop)

Si vous comparez l'image de dégradé (à droite) de 'Linear Dodge ' avec celle de '[Plus](#plus)', vous constaterez que, pour deux images opaques, elles ont exactement le même effet. Sa formule est bien sûr : Src + Dest Autrement dit, pour des images sans transparence, ces deux commandes avec les images 'A' et 'B produisent la même image résultante 'R'...

  magick A  B   -compose    Plus     -composite   R
  magick A  B   -compose LinearDodge -composite   R

La méthode équivaut au mode de composition Photoshop du même nom. La seule véritable différence entre les deux méthodes réside dans leur manière de gérer les images contenant des couleurs semi-transparentes. Essentiellement, la composition Linear_Dodge utilise un mélange alpha « Over », tandis que la composition Plus utilise un mélange alpha « Plus ». Pour plus de détails, voir Mélange Plus. La méthode de composition '[Linear_Dodge](#lineardodge)' a été ajoutée à la version IM 6.5.4-3.
[IM Output]

Linear_Burn (une méthode « Subtract » de Photoshop)

La méthode de composition 'Linear Burn ' est une composition « Add Minus One », qui produit le même résultat que si vous inversiez toutes les images d'entrée et de sortie d'une méthode de composition '[Linear Dodge](#lineardodger)' ou '[Plus](#plus)'. Sa formule est : _Src_ + _Dest_ - 1 Dans Photoshop, elle est connue non seulement sous le nom de 'Linear Burn' mais aussi de 'Subtract'. En effet, si vous inversiez l'une des images d'entrée (comme l'image source), cette image est soustraite de l'autre image. Par exemple, voici le calcul résultant lorsque vous inversez l'image source...

(1-_Src_) + _Dest_ - 1 ==> _Dest_ - _Src_

Autrement dit, sans transparence, vous pouvez prendre l'image 'A' et soustraire l'image 'B pour produire la même image résultante 'R'...

  magick A  B               -compose  minus_src  -composite  R
  magick B  A               -compose  minus_dst  -composite  R
  magick A \( B -negate \)  -compose linear_burn -composite  R
  magick B -negate  A       -compose linear_burn -composite  R

Fondamentalement, quelle que soit l'image inversée, c'est cette image que '[Linear Burn](#linearburn)' soustraira de l'autre. Peu importe qu'il s'agisse de l'image source ou de l'image destination. D'une certaine manière, cela rend cette méthode de composition plus polyvalente. Par exemple, je soustrais ici une image d'un cercle à droite (que j'inverse) de celle de gauche.

  magick circle_left.gif \( circle_right.gif -negate \) \
         -compose LinearBurn -composite   circle_subtract.gif

[IM Output] [IM Output] [IM Output]

Cette méthode de composition la rend également utile comme alternative à la méthode de séquence Subtract Evaluate pour soustraire plusieurs images d'une même image de départ. Notez toutefois que '[Linear Burn](#linearburn)' ne peut pas être appliqué directement au canal alpha des images, alors que la méthode de composition mathématique Minus le peut, elle. La méthode de composition '[Linear_Burn](#lineardodge)' a été ajoutée à la version IM 6.5.4-3.
[IM Output]

Color_Dodge (division de Photoshop)

Cette méthode de composition utilise l'image de superposition source comme un masque qui protège en quelque sorte l'image d'arrière-plan d'une « exposition à la lumière » sur de longues périodes. Les parties exposées à un masque plus clair sont éclaircies (ou dodgées), tandis que les zones noires ne subissent aucun changement. Vous pourriez y penser comme au fait de poser un objet sur une photo pendant très longtemps, faisant que les parties exposées à la lumière blanchissent lentement avec le temps, tandis que les parties qui étaient couvertes restent telles qu'elles étaient. Une superposition noir pur ne modifie pas l'image, tandis qu'une superposition blanc pur rendra blanches toutes les couleurs d'arrière-plan, sauf celles qui étaient noir pur. Cependant, contrairement aux méthodes de composition dodge '[Screen](#screen)' (multiplication inversée) ou '[Linear_Dodge](#lineardodge)' (add), une image de destination noir pur ou entièrement blanche restera inchangée par le masque d'éclairage. En d'autres termes, seules les zones contenant des gris et des couleurs non pures sont affectées. Sa formule est : _Dest_ / (1-_Src_) exemple et utilisation concrète nécessaires ici En réalité, '[ColorDodge](#colordodge)' et les deux opérateurs '[Divide](#divide)' peuvent produire les mêmes résultats. '[ColorDodge](#colordodge)' requiert toutefois que l'image utilisée comme « diviseur » soit inversée et utilisée comme image « source » pour l'opérateur. Par exemple, toutes ces commandes opérant sur les images 'N' (numérateur) divisées par 'D' (dénominateur) produisent la même image résultante 'R'... En supposant que toutes les images sont de la même taille.

  magick N \( D -negate \)  -compose ColorDodge -composite  R
  magick N    D             -compose DivideSrc  -composite  R
  magick D    N             -compose DivideDst  -composite  R

Voir '[Divide](#divide)' pour un exemple de la manière dont la division d'images peut servir à supprimer un dégradé d'arrière-plan. [IM Output]

Color_Burn

C'est l'inverse de '[Color_Dodge](#colordodge)', équivalent à inverser toutes les images d'entrée et de sortie. Le résultat est que l'image d'arrière-plan est assombrie par une image de masquage sombre, tandis que le blanc ne produit aucun assombrissement. Cependant, contrairement aux méthodes de composition burn '[Multiply](#multiply)' ou '[Linear_Burn](#linearburn)', une image de destination noir pur ou entièrement blanche restera inchangée par le masque d'éclairage. En d'autres termes, seules les zones contenant des gris et des couleurs non pures sont affectées. Sa formule est : 1 - ( (1-_Dest_) / _Src_) exemple et utilisation concrète nécessaires ici Cette commande est équivalente à l'ensemble de formules précédentes pour implémenter une division d'images. Notez la négation finale dans la commande.

  magick N -negate D   -compose ColorBurn -composite  -negate  R

Un usage de '[Color_Burn](#colorburn)' consiste à nettoyer les dégradés d'arrière-plan sombres jusqu'au noir pur. Un peu comme '[Color_Dodge](#colorburn)' peut diviser les arrière-plans jusqu'au blanc. Avant IM v6.5.4-3, il s'est avéré que '[Color_Burn](#colorburn)' était implémenté de manière incorrecte.

Méthodes de copie de canaux

Ces méthodes de composition d'images sont conçues pour transférer les informations de canal d'une image vers une autre. Elles font toutefois certaines hypothèses sur l'image à partir de laquelle le « canal » est copié. Je vous suggère de lire les sections Espace colorimétrique de l'image et Opérateurs de canaux de couleur pour comprendre comment IM représente en mémoire les canaux de couleur des images avant de les utiliser. La méthode de copie de canaux la plus utile est 'Copy_Opacity' (voir ci-dessous). C'est le moyen le plus simple de remplacer complètement (ou d'ajouter) uniquement le canal alpha d'une image existante à l'aide d'une image de masque en niveaux de gris distincte.

Copy_Opacity (définir la transparence à partir d'un masque en niveaux de gris)

Le but initial de l'opérateur '[Copy_Opacity](#copyopacity)' était de copier le canal de transparence de l'image source dans l'image de destination, afin de définir les parties transparentes de cette image. Cela se fait plus couramment à l'aide des opérateurs Duff-Porter, spécialement conçus pour composer des images avec des transparences alpha. Par exemple, si la destination est entièrement opaque, ce qui est typique de l'utilisation de cet opérateur, alors les opérateurs '[Dst_In](#dstin)', voire 'Dst_ATop', produiront le même résultat. Alors pourquoi l'opérateur '[Copy_Opacity](#copyopacity)' est-il si important, alors qu'il existe des alternatives ? La réponse tient à la manière dont cet opérateur gère un cas particulier. Lorsque l'image de superposition (source) ne possède aucun canal alpha, cet opérateur la traite alors comme un simple masque d'image en niveaux de gris. Autrement dit, il remplacera tout canal alpha existant de l'image par l'image en niveaux de gris fournie. En résumé, tout ce qui est noir dans l'image en niveaux de gris sera considéré comme entièrement transparent, et le blanc comme entièrement opaque. C'est tellement important, et si couramment utilisé, que j'en ferai une règle empirique...

Les images utilisant cet opérateur ne devraient PAS contenir de canal alpha.

Vous pouvez vous assurer que les images ne comportent aucun canal alpha en désactivant le canal alpha sur les deux images d'entrée avant la composition à l'aide du réglage de composition '[Copy_Opacity](#copyopacity)'. Par exemple, créez une image de lune en niveaux de gris (facile à dessiner), puis utilisez-la comme masque pour un dégradé plasma bleu, afin de produire une jolie lune bleue à l'aspect marbré. |

  magick -size 70x70 xc:black -fill white -draw 'circle 35,35 35,5' \
                               -fill black -draw 'circle 28,30 35,5' \
          moon_mask.gif

  magick -size 70x70 plasma:white-dodgerblue  moon_mask.gif \
          -alpha Off  -compose CopyOpacity   -composite  moon_gradient.png

[IM Output]
[IM Output]
Si vos images comportent des composantes transparentes que vous devez préserver, alors ce n'est pas l'opérateur de composition alpha qu'il vous faut. Vous voudrez plus probablement utiliser '[Dst_In](#dstin)' à la place, pour soustraire les zones transparentes de la superposition source de votre destination (auquel cas les deux images doivent avoir un canal alpha activé et utilisé). Cet opérateur est expliqué plus en détail encore dans Utilisation d'une image de masque avec les polices et dans Édition de masques d'image. Il est également utilisé dans de nombreux autres exemples tout au long de ces pages.

Copy_Red, Copy_Green, Copy_Blue

Copie le canal de couleur donné de l'image source dans l'image de destination. Comme une image RGB en niveaux de gris contient les mêmes données dans ses trois canaux de couleur, on peut considérer ces méthodes comme copiant une image de canal en niveaux de gris pour remplacer le canal spécifié dans l'image de destination. Un peu comme 'Copy_Opacity' (voir ci-dessus) peut remplacer le « canal alpha » d'une image par une image en niveaux de gris. Ces méthodes de copie de canaux sont rarement utilisées aujourd'hui grâce au recours à divers Opérateurs de canaux de couleur pour séparer et recombiner les canaux de couleur via des images de canaux en niveaux de gris. Notez qu'en fusionnant divers motifs de dégradés en niveaux de gris, on peut générer des images en couleur très intéressantes à l'aide de ces opérateurs. Pour quelques exemples, examinez les combinaisons de dégradés de couleur dans les tableaux bruts d'opérateurs de composition.

Copy_Cyan, Copy_Magenta, Copy_Yellow

Ce sont des synonymes des mêmes méthodes de la section précédente. Fondamentalement, le canal 'Red' des images RGB sert aussi de canal 'Cyan' dans les images CYMK. Il en va de même pour les canaux 'Green' et 'Magenta', et les canaux 'Blue' et 'Yellow'. De ce fait, copier le canal 'Cyan' revient à copier le canal 'Red'. Le type de canal représenté par les données de l'image dépend de l'espace colorimétrique courant de l'image en mémoire.

Copy_Black

Ceci copie également juste le canal 'Black' de la source vers la destination, s'il existe. Ce canal n'existe toutefois que pour les images CMYK. Si le canal « Black » n'existe pas, cela ne fait rien, ce qui est probablement un bug. Ce qu'il devrait probablement faire, c'est copier une image de canal 'Black' en niveaux de gris vers le canal black de l'image de destination (en supposant qu'il existe).

Hue (copier la teinte d'une image RGB vers la destination)

Cet opérateur copie la teinte H de l'image source pour remplacer la teinte de l'image de destination, en laissant inchangées la saturation S et la luminance L (ou est-ce la luminance Y ?) de l'arrière-plan. Ceci suppose que les deux images sont dans l'espace colorimétrique RGB. Je n'ai pas testé cela avec une image dans un espace colorimétrique non RGB.

Saturate (copier la saturation d'une image RGB vers la destination)

Copie la saturation S de la source vers la destination (en supposant que l'image est dans l'espace colorimétrique RGB), en laissant inchangées la teinte H et la luminance L (ou est-ce la luminance Y ?). Ceci suppose que les deux images sont dans l'espace colorimétrique RGB. Je n'ai pas testé cela avec une image dans un espace colorimétrique non RGB.

Luminize (copier la luminance d'une image RGB vers la destination)

Copie la luminance L (ou est-ce la luminance Y ?) de la source vers la destination, en laissant inchangées la teinte H et la saturation S. Ceci suppose que les deux images sont stockées dans l'espace colorimétrique RGB. Je n'ai pas testé cela avec une image dans un espace colorimétrique non RGB.

Colorize (copier la teinte et la saturation vers la destination)

Copie la teinte H et la saturation S de la source vers la destination, en laissant inchangée la luminance L (ou est-ce la luminance Y ?). Ceci suppose que les deux images sont stockées dans l'espace colorimétrique RGB. Je n'ai pas testé cela avec une image dans un espace colorimétrique non RGB.


Dissoudre une image sur une autre

Ce que fait l'opérateur « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) », c'est fournir une méthode de composition '[Over](#over)' contrôlée. Il ajuste la transparence de l'image de superposition, avant qu'elle ne soit superposée par-dessus l'arrière-plan, selon les pourcentages donnés.

**magick composite -dissolve {_percent_} overlay  bgnd  result



   magick composite -dissolve {_src_percent_}x{_dst_percent_} overlay  bgnd  result



  magick bgnd  overlay   -compose dissolve \


       -define compose:args={_src_percent_},{_dst_percent_} \

     -composite   result
**

Fournir deux arguments (nouveauté d'IM v6) vous permet de définir exactement quelle proportion de l'image de superposition et de l'image d'arrière-plan est dissoute avant que les images ne soient superposées. Si un seul argument de pourcentage est donné, seule la superposition est dissoute pour ne laisser que cette quantité (0 pour cent est complètement transparent, 100 source est inchangé) avant d'être superposée (à l'aide de la méthode de composition '[Over](#over)') sur l'arrière-plan. En outre, si vous poursuivez au-delà d'une valeur de 100 % (également nouveau pour IM v6), il commence alors à dissoudre l'image d'arrière-plan. En d'autres termes, dans la plage de 0 à 100 pour cent, l'image d'arrière-plan n'est pas dissoute du tout (avec un dst_percent de 100%), tandis que dans la plage de 100 à 200, la superposition est laissée telle quelle (src_percent fixé à 100%) et l'arrière-plan est dissous, de sorte qu'il a complètement disparu lorsque l'argument atteint la valeur 200%. Voici un tableau de résultats avec divers arguments de dissolve... |

  magick composite -dissolve {_argument_}  -gravity South \
            star.gif   dragon_sm.gif -alpha Set   {_result_}

[IM Output] [IM Output]
[IM Output]


Comme vous pouvez le voir, « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » dissout d'abord lentement une nouvelle image par-dessus l'arrière-plan, puis dissout lentement l'image d'arrière-plan d'origine. Ce qui convient très bien aux images contenant des zones transparentes. Vous pouvez également contrôler la dissolution de l'arrière-plan, de sorte que, tandis qu'une image se dissout par-dessus, vous pouvez faire en sorte que l'arrière-plan se dissolve en dessous. C'est très bien, mais ce n'est pas vraiment adapté à un fondu enchaîné de type diaporama entre les images. Au fur et à mesure qu'une image est superposée, les images ne sont pas fusionnées de manière égale, et échanger les arguments d'image (et les arguments de dissolve correspondants) produira des résultats différents. Pour que la plage de 100 % à 200 %, ou le second argument de pourcentage, fonctionne, l'image d'arrière-plan doit contenir un canal alpha. C'est particulièrement important pour les images JPEG, qui ne contiennent aucune transparence par défaut. À ce titre, c'est probablement une bonne idée de demander à IM de doter toutes les images d'un canal alpha à l'aide de l'opérateur « [-alpha](https://imagemagick.org/command-line-options/#alpha) Set » avant d'appliquer la méthode de composition 'dissolve'.
Le plus gros inconvénient de l'utilisation de dissolve sur les deux images est que la transparence affecte la moyenne. Autrement dit, dissoudre deux images de 50 % aboutira toujours à des couleurs semi-transparentes, même lorsque les deux images d'entrée sont entièrement opaques. Par exemple :
  magick dragon_sm.gif star.gif -alpha on \
          -compose dissolve -define compose:args='50,50' \
          -gravity South  -composite     dissolve_50_50.png
  magick composite -compose Dst_Over -tile pattern:checkerboard \
            dissolve_50_50.png   dissolve_50_50_bg.png

[IM Output]
Vous pouvez voir qu'après avoir superposé l'image sur un motif en damier, toutes les parties de l'image sont au moins semi-transparentes. Les parties effectivement superposées sont toutefois moins transparentes que toute partie où l'une des images sources est transparente. Le seul cas où vous obtiendrez une image entièrement opaque à partir d'une composition 'Dissolve' est si l'une des images (généralement l'« arrière-plan ») n'est pas dissoute (une valeur de 100 pour cent) et reste opaque. C'est pourquoi, par défaut, on utilise une valeur de 100 pour l'« arrière-plan », du moins dans un premier temps. Les cas suivants sont des cas particuliers pour des arguments « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » spécifiques... 0x0 | | Les deux images sont dissoutes jusqu'à une transparence totale.
Équivalent à une méthode de composition '[Clear](#clear)'.
---|---|---
0 | Juste l'image d'arrière-plan inchangée (source rendue transparente).
Équivalent à une méthode de composition '[Dst](#dst)'.
100 | Une superposition normale de l'image de superposition sur l'arrière-plan.
Équivalent à une méthode de composition '[Over](#clear)'.
200 | L'image de superposition sur un canevas vierge (arrière-plan rendu transparent).
Équivalent à une méthode de composition '[Src](#src)'.
La méthode de composition « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » est couramment utilisée comme moyen alternatif de filigranage avec des images, en particulier avec des filigranes en couleur.


Fusionner deux images

La méthode de composition « [-blend](https://imagemagick.org/command-line-options/#blend) » fournit ce que la méthode « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » était censée fournir à l'origine, avant d'être détournée vers d'autres opérations plus élémentaires. Là où la méthode « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » superpose les images l'une sur l'autre, « [-blend](https://imagemagick.org/command-line-options/#blend) » fusionne les images de sorte que les deux soient traitées à égalité (simplement additionnées), selon les pourcentages fournis en argument. Vous pouvez donc obtenir le même résultat (sauf pour la taille finale de l'image) en échangeant les pourcentages et les arguments d'image. Ce n'est pas le cas avec la méthode « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) ». Autrement dit, « [-blend](https://imagemagick.org/command-line-options/#blend) » est associative (les arguments sont interchangeables), alors que « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » ne l'est pas.

**magick composite -blend {_percent_} overlay  bgnd  result



   magick composite -blend {_src_percent_}x{_dst_percent_} overlay  bgnd  result



   magick bgnd  overlay   -compose blend \


       -define compose:args={_src_percent_},{_dst_percent_} \

     -composite   result
**

Si une seule valeur de pourcentage est fournie, elle sert de pourcentage de dissolution pour l'image superposée, tandis que l'image de fond est dissoute d'exactement la valeur complémentaire. Ainsi, un « -blend 30 » dissout l'image superposée de 30 %, et le fond de 70 % avant que les deux images ne soient additionnées. C'est donc équivalent à « -blend 30x70 ». Il en résulte que l'opacité des deux images (dans les zones superposées) totalisera toujours 100 %.

En fournissant deux pourcentages, vous pouvez contrôler exactement la proportion dans laquelle les deux images sont fusionnées. Voici un tableau de résultats avec divers arguments de dissolution... |

  magick composite -blend {_argument_}  -gravity South \
            compose_R.png compose_plus_GB.png  -alpha Set  {_result_}

[IM Output] [IM Output]
[IM Output]


Les résultats montrent que « [-blend](https://imagemagick.org/command-line-options/#blend) » vous permet de remplacer progressivement une image par une autre, à parts égales, sans superposition. Si vous superposez le résultat d'un blend sur un fond noir, disons de la taille de votre écran, vous pouvez facilement réaliser un diaporama tout à fait convenable où une image se fond lentement dans une autre. Vous constatez également que, comme les images sont additionnées (en interne, l'opérateur de composition « [Plus](#plus) » est utilisé), vous pouvez facilement dépasser les maximums des canaux de couleur, ce qui produit des artefacts. Une couleur blanc 100 %, en particulier, garantit que rien de l'autre image ne sera visible, tous les canaux de couleur étant déjà à leur maximum. Il est recommandé, dans la plupart des situations, de n'utiliser que la version à un seul argument de blend. Comme pour « -dissolve », l'image de fond doit contenir un canal alpha pour que « -blend » fonctionne correctement et puisse dissoudre l'image de fond. Il est donc probablement judicieux de demander à IM de définir un canal alpha sur toutes les images avant d'appliquer la composition « [Blend](#blend) ».
Voici quelques cas particuliers pour des arguments spécifiques de « [-blend](https://imagemagick.org/command-line-options/#blend) »... 0x0
Équivalent à une méthode de composition « [Clear](#clear) ».
--- ---
0 Uniquement l'image de fond, inchangée.
Équivalent à une méthode de composition « [Dst](#dst) ».
100 L'image superposée sur un fond vierge.
Équivalent à une méthode de composition « [Src](#src) ».
100x100 Simplement les deux images additionnées.
Équivalent à une méthode de composition « [Plus](#plus) ».
50 Moyenne des deux images. Cela équivaut à l'opérateur de séquence d'images « [-evaluate-sequence mean](https://imagemagick.org/command-line-options/#average) », mais avec deux images. (Voir aussi Moyenne d'images)

Blend contre Dissolve

Si Dissolve et Blend rendent tous deux les images semi-transparentes, « [-dissolve](https://imagemagick.org/command-line-options/#dissolve) » compose l'image avec « [Over](#over) », tandis que « [-blend](https://imagemagick.org/command-line-options/#blend) » fusionne les images avec « [Plus](#plus) ». Cela peut sembler anodin, mais c'est très important, car cela définit la façon dont les deux méthodes de composition traitent les parties de l'image qui ne sont pas superposées, ou les zones où l'image superposée est transparente. Par exemple.

  magick dragon_sm.gif star.gif -alpha on \
          -compose dissolve  -define compose:args=50 \
          -gravity South  -composite     dissolve_50.png
  magick dragon_sm.gif star.gif -alpha on \
          -compose blend  -define compose:args=50 \
          -gravity South  -composite     blend_50.png

[IM Output]
Dissolve | [IM Output]
Blend
---|---

Notez que, même si les parties non superposées du fond « dragon » sont semi-transparentes dans les images fusionnées, la zone de l'étoile est totalement opaque dans les deux, et donne le même résultat de couleur ! Autrement dit, pour les zones où les deux images sont totalement opaques, et où vous laissez IM calculer l'argument « {_dst_percent_} » approprié, le résultat sera lui aussi totalement opaque et identique. Par exemple, ici je fusionne l'image « dragon » avec l'image « rose » intégrée. Je rogne les deux images à la même taille, afin que les deux images totalement opaques puissent se recouvrir entièrement.

  magick dragon_sm.gif rose: -crop 70x46+0+0 +repage -alpha on \
          -compose dissolve  -define compose:args=50 \
          -gravity South  -composite     dissolve_50_opaque.png
  magick dragon_sm.gif rose: -crop 70x46+0+0 +repage -alpha on \
          -compose blend  -define compose:args=50 \
          -gravity South  -composite     blend_50_opaque.png

[IM Output]
Dissolve | [IM Output]
Blend
---|---

Si vous comparez ces deux images, vous constaterez qu'elles sont exactement identiques. En résumé, un Dissolve (over avec seulement l'image superposée dotée d'un pourcentage de transparence) est identique à un Blend (addition pondérée des deux images, chacune avec les pourcentages appropriés) : ils produisent le même résultat pour toute image totalement opaque. Ce n'est que lorsqu'une ou les deux images contiennent de la transparence que les deux méthodes diffèrent.

Utiliser Blend pour modifier une seule image

Blend est essentiellement une « fonction d'interpolation », ou « moyenne pondérée », qui vous permet de combiner deux images totalement opaques de façon linéaire et contrôlée. Soit 30 % de la source plus 70 % du fond, pour produire une nouvelle image opaque à 100 %. Mais il peut faire bien plus que combiner deux images. Il peut aussi servir à éclaircir, régler le contraste, la saturation, coloriser et même accentuer la netteté d'une image donnée. Cet usage de blend est approfondi dans un document trouvé par BugBear bugbear@papermule.co.uk sur le WWW, Image Processing by Interpolation and Extrapolation, copie de celui de Grafica Obscura (qui n'est pas directement accessible depuis une source externe). Ce document est recommandé pour approfondir l'utilisation de cette fonction. La capacité d'extrapolation a été ajoutée à l'opérateur « [-blend](https://imagemagick.org/command-line-options/#blend) » dans IM v6.3.5-10.
Par exemple, nous pouvons ici éclaircir ou assombrir l'image de la rose en la fusionnant avec une image entièrement noire de même taille.
  magick composite -blend   0 rose: -size 70x46 xc:black -alpha Set blend_dark_0.jpg
  magick composite -blend  50 rose: -size 70x46 xc:black -alpha Set blend_dark_50.jpg
  magick composite -blend 100 rose: -size 70x46 xc:black -alpha Set blend_dark_100.jpg
  magick composite -blend 150 rose: -size 70x46 xc:black -alpha Set blend_dark_150.jpg
  magick composite -blend 200 rose: -size 70x46 xc:black -alpha Set blend_dark_200.jpg

[IM Output]
0% | [IM Output]
50% | [IM Output]
100% | [IM Output]
150% | [IM Output]
200%
---|---|---|---|---

Comme pour tout usage de la méthode de composition Blend, 0 % donne l'image « destination », tandis qu'à 100 % le résultat est l'image « source » d'origine, inchangée. Ce sont les images fusionnées et extrapolées qui présentent ici le plus d'intérêt. De la même façon, fusionner avec une image d'un gris pur permet d'ajuster le contraste de n'importe quelle image.

  magick composite -blend   0 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_0.jpg
  magick composite -blend  50 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_50.jpg
  magick composite -blend  80 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_80.jpg
  magick composite -blend 100 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_100.jpg
  magick composite -blend 120 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_120.jpg
  magick composite -blend 150 rose: -size 70x46 xc:'#808080' -alpha Set blend_gray_150.jpg

[IM Output]
0% | [IM Output]
50% | [IM Output]
80% | [IM Output]
100% | [IM Output]
120% | [IM Output]
150%
---|---|---|---|---|---

Ici, je fusionne l'image avec une version en niveaux de gris de la même image, ce qui permet de contrôler la saturation des couleurs.

  magick rose: -type grayscale  rose_gray.png
  magick composite -blend   0 rose: rose_gray.png -alpha Set blend_color_0.jpg
  magick composite -blend  50 rose: rose_gray.png -alpha Set blend_color_50.jpg
  magick composite -blend 100 rose: rose_gray.png -alpha Set blend_color_100.jpg
  magick composite -blend 150 rose: rose_gray.png -alpha Set blend_color_150.jpg
  magick composite -blend 200 rose: rose_gray.png -alpha Set blend_color_200.jpg

[IM Output]
0% | [IM Output]
50% | [IM Output]
100% | [IM Output]
150% | [IM Output]
200%
---|---|---|---|---

Ici, je fusionne l'image de la rose avec sa version floutée, ce qui produit des flous adoucis lors de l'interpolation, et un renforcement de netteté lors de l'extrapolation à partir de sa forme floutée.

  magick rose: -blur 0x5  rose_blurred.png
  magick composite  -blend   0  rose: rose_blurred.png -alpha Set blend_blur_0.jpg
  magick composite  -blend  50  rose: rose_blurred.png -alpha Set blend_blur_50.jpg
  magick composite  -blend 100  rose: rose_blurred.png -alpha Set blend_blur_100.jpg
  magick composite  -blend 150  rose: rose_blurred.png -alpha Set blend_blur_150.jpg
  magick composite  -blend 200  rose: rose_blurred.png -alpha Set blend_blur_200.jpg

[IM Output]
0% | [IM Output]
50% | [IM Output]
100% | [IM Output]
150% | [IM Output]
200%
---|---|---|---|---


Option Watermark — composition « Modulate »

L'option de composition « [-watermark](https://imagemagick.org/command-line-options/#watermark) » ou la méthode de composition « modulate » est destinée à décolorer les images dans l'espace HSB à des fins de droits d'auteur.

**magick composite -watermark {_brightness_}[x{_saturation_}] overlay  bgnd  result \

   magick bgnd  overlay   -compose modulate \


       -define compose:args={_brigthness_}[,{_saturation_}] \

     -composite   result
**

L'image « overlay » est une image noir et blanc masquée par l'alpha, utilisée pour éclaircir/assombrir l'image de destination du pourcentage de « brightness » indiqué. Une « brightness » de « 0 » ne modifie pas la luminosité de l'image, tandis qu'une valeur de « 100 » remplace la luminosité par l'intensité de l'image superposée. Autrement dit, si l'overlay est noir, la destination devient noire ; s'il est blanc, la couleur de l'image de destination sera pleinement saturée. La « saturation » vaut « 100 » par défaut, produisant une saturation de couleur maximale. Si elle est fixée à « 0 », la zone masquée sera désaturée en noir et blanc. Voici un tableau de résultats avec divers arguments... |

  magick composite -watermark {_argument_}  -gravity South \
            sphinx.gif  cyclops.gif   {_result_}

[IM Output] [IM Output]
[IM Output]


Une bonne valeur pour filigraner légèrement des images est une brightness d'environ 15 à 30 pour cent. Voici quelques cas particuliers pour des arguments spécifiques de « [-watermark](https://imagemagick.org/command-line-options/#watermark) »... 0 Aucune modification n'est apportée à l'image de destination.
100 La destination devient noire là où l'overlay est noir, et prend une teinte de couleur pleinement saturée là où l'overlay est blanc
0x0 La zone d'overlay masquée est désaturée en niveaux de gris
100x0 L'overlay en niveaux de gris est simplement superposé « [ATop](#atop) » à la destination.
Pour d'autres techniques de filigrane, voir Filigraner avec des images.

Utiliser un masque de composition pour limiter la zone composée

La commande « magick composite » et l'opérateur « [-composite](https://imagemagick.org/command-line-options/#composite) » acceptent également une troisième image de masquage qui limite la zone affectée par la méthode « [-compose](https://imagemagick.org/command-line-options/#compose) ». Par exemple, à partir de deux images et d'une image masque, vous pouvez superposer une partie de l'image source sur l'image d'arrière-plan, telle que définie par ce masque. Notez toutefois que l'image d'arrière-plan définit toujours la taille finale de l'image résultante.

  magick composite tile_water.jpg   tile_aqua.jpg  moon_mask.gif   mask_over.jpg

[IM Output] [IM Output] [IM Output] [IM Output]

L'image masque est considérée comme faisant partie de l'image de destination : elle définit quelles parties de la destination peuvent être modifiées par le résultat de la composition alpha. Autrement dit, les parties blanches peuvent être modifiées, tandis que les parties noires (et les parties situées hors de l'image masque) sont laissées telles quelles. Malheureusement, alors que les réglages « [-gravity](https://imagemagick.org/command-line-options/#gravity) » et « [-geometry](https://imagemagick.org/command-line-options/#geometry) » permettent de repositionner l'image source, l'image masque n'est PAS repositionnée et reste alignée sur l'image de destination. Soyons donc clairs à ce sujet…

Le masque est aligné sur l'image d'arrière-plan d'origine.
Aucun réglage de gravity/geometry ne lui est appliqué.

Cela signifie que si je veux repositionner le masque, je dois agrandir l'image masque avec la quantité appropriée de lignes et de colonnes noires. Voir Splice, ajouter des lignes et colonnes de pixels. Par exemple, voici une version « magick » (les arguments source et arrière-plan sont intervertis), avec l'image masque ajustée de manière à la déplacer par rapport à l'image d'arrière-plan. |

  magick tile_aqua.jpg   tile_water.jpg \
          \( -background black -splice 10x25+0+0 moon_mask.gif \) \
          -composite   mask_offset.jpg

[IM Output]
Rappelez-vous que, dans les commandes « magick », l'opérateur « [-composite](https://imagemagick.org/command-line-options/#composite) » spécifie d'abord l'image de destination ou d'arrière-plan. Le résultat revient à donner au masque un décalage de « +10+25 », mais sans déplacer ni l'image source ni l'image d'arrière-plan. Si vous voulez aligner le masque sur l'image source, il vaut peut-être mieux masquer l'image source séparément (à l'aide de « [Copy_Opacity](#copyopacity) » ou d'une autre technique). Vous pouvez ensuite positionner ce résultat sur l'arrière-plan sans problème d'alignement. Voici un exemple similaire, mais cette fois j'utilise un masque en dégradé de la même taille que l'image d'arrière-plan afin de fondre les deux images ensemble, produisant un effet de « bas-fonds ». |

  magick tile_aqua.jpg  tile_water.jpg  -size 94x94  gradient: \
          -composite   water_shallows.jpg

[IM Output]
Cela fournit un moyen simple de faire chevaucher deux images. Voir Faire chevaucher des photos.

Masque de composition et transparence

Vous pourriez penser, d'après ce qui précède, qu'utiliser un masque de composition à trois images revient à peu près à utiliser « [Copy_Opacity](../static/img/compose/copyopacity) » pour régler une transparence sur l'image de superposition, puis à composer celle-ci sur votre arrière-plan. Et pour des images sans aucune transparence (comme ci-dessus), vous auriez raison. Mais ce n'est pas toute l'histoire. D'abord, le masque est lié à l'image de destination, plutôt qu'à l'image source, il n'est donc ni décalé ni affecté par la gravity. De plus, contrairement à « [Copy_Opacity](../static/img/compose/copyopacity) », l'image masque est traitée comme une image purement en niveaux de gris. IM ignorera toute transparence alpha que le masque pourrait posséder. Ainsi, vous n'avez pas à vous soucier de Désactiver le canal alpha dans l'image masque. Enfin, le masque agit en limitant la zone modifiée, ce qui est très différent d'un simple masquage de l'image source. Pour une simple composition « [Over](../static/img/compose/over) », cela revient au même que si le masque était multiplié avec toute transparence présente dans l'image source, afin de limiter ce qui est superposé. Ainsi, pour des images source entièrement opaques, vous pouvez le voir comme la transparence de l'image source. Par exemple, superposez deux cercles normalement, puis superposez-les avec un masque limitant la zone dans laquelle l'image de destination est modifiée.

  magick -size 60x60 xc:none -fill red  -draw 'circle 35,21 35,3'  m_src.png
  magick -size 60x60 xc:none -fill blue -draw 'circle 21,39 24,57' m_bgnd.png
  magick -size 60x60 xc:   -draw 'polygon 0,59 59,0, 0,0'          m_mask.png

  magick composite m_src.png  m_bgnd.png                   m_over.png
  magick composite m_src.png  m_bgnd.png   m_mask.png      m_over_masked.png

[IM Output] [IM Output] [IM Output]
[IM Output] [IM Output] [IM Output] [IM Output]

Le résultat équivaut à ce que l'image des cercles rouges soit « masquée » par le masque en niveaux de gris fourni, lequel est ensuite superposé sur l'image de destination. Cependant, avec tout autre type de méthode de composition alpha, vous avez intérêt à considérer le masque simplement comme limitant la zone d'effet, plutôt que comme un masque de transparence de l'image source. Ici j'ai utilisé une méthode « [Src](../static/img/compose/src) » pour remplacer la zone masquée de la destination par le contenu de l'image source. |

  magick composite  m_src.png  m_bgnd.png  m_mask.png  -compose Src  m_src_masked.png

[IM Output]
Comme vous pouvez le voir, seule la zone définie par le masque est effectivement remplacée par le résultat de la composition alpha. Si le masque servait uniquement à modifier la transparence de l'image source, ce qui précède ne montrerait que l'image source et rien de l'image d'arrière-plan.

FUTURE:  Using masked composition to overlay an object in front of a
backdrop, but behind some foreground object.  Also develop an animated example,
of something being obscured by foreground objects in the destination.

| _Ce qui précède constituait un bug majeur de longue durée concernant le masquage de composition dès lors que vous faisiez intervenir des images source ou de superposition dotées de transparence, et/ou que vous tentiez d'utiliser d'autres compositions alpha que la méthode « [Over](#over) ». Voir Composite Mask Bug pour les détails.

_
---|---


Composer à l'aide de tuiles d'image

Le réglage « [-tile](https://imagemagick.org/command-line-options/#tile) » dans « magick composite » est très différent du même réglage dans « magick » ou « magick montage ». S'il est donné, il signifie que l'image source doit être répétée en mosaïque sur l'image d'arrière-plan. Par exemple, ici nous répétons une « étoile de couleur » sur une image de nuancier de couleurs netscape… |

  magick composite  -tile star.gif   netscape:   tile.gif

[IM Output]
Une utilisation courante de la mosaïque de composition consiste à répéter un avis de copyright ou une autre mention semi-transparente sur des images avant de les publier sur le net. Pour des exemples de ce type, voir les derniers exemples de Filigrane avec du texte. Notez que le réglage est essentiellement (du moins pour l'instant) sans argument. Ce n'est qu'un simple indicateur booléen d'activation/désactivation de l'opération « magick composite » finale. Par conséquent, vous ne pouvez pas l'utiliser pour répéter une image d'arrière-plan, car cela signifierait qu'IM ne peut pas utiliser l'image d'arrière-plan pour définir la taille finale du résultat. Vous pouvez toutefois répéter une image sous une autre image en utilisant « [Dst_Over](#dstover) » à la place. |

  magick -background none -pointsize 36 label:'Tile Under'  png:- |\
  magick composite -tile bg.gif  -   -compose Dst_Over   tile_under.gif

[IM Output]
De plus, beaucoup des opérateurs mathématiques sont associatifs, ce qui signifie que la source et la destination peuvent être interverties sans affecter le résultat (sauf la taille finale de l'image). Actuellement, il n'existe pas de méthode simple pour effectuer une composition alpha en mosaïque avec la commande « magick ». C'est dommage, car cela rendrait le Pavage avec une image déjà en mémoire beaucoup plus facile qu'il ne l'est actuellement. La technique de base pour la mosaïque de composition avec « magick » consiste à Cloner l'image d'origine et à la répéter en mosaïque à l'aide de l'une des méthodes indiquées dans Canevas en mosaïque. Par exemple… |

  magick -gravity center -pointsize 32 -font Corsiva \
          label:'Tile White\nBackgrounds' -bordercolor white -border 5 \
          \( -clone 0 -tile tile_aqua.jpg -draw "color 0,0 reset" \) \
          -compose Multiply -composite  tile_convert.gif

[IM Output]
Ce qui précède remplace un « arrière-plan blanc » de l'étiquette à l'aide de la méthode de Composition mathématique « [Multiply](#multiply) ». Voir aussi Utiliser un masque d'image, composition mathématique.


Méthodes de composition spéciales

Il existe également quelques méthodes de composition à usage spécial qui ont été ajoutées pour l'une ou l'autre raison.

Mathematics (méthode de composition mathématique définie par l'utilisateur)

Cette méthode de composition prend 4 valeurs numériques pour permettre à l'utilisateur de définir de nombreuses Méthodes de composition mathématique. Les quatre arguments, « A », « B », « C » et « D », définissent la formule…

A*Sc*Dc + B*Sc + C*Dc + D

où « Sc » est l'image source ou de superposition, et « Dc » l'image d'arrière-plan ou de destination. Les quatre valeurs doivent toutes être fournies. Par exemple, nous pourrions générer l'équivalent d'une méthode de composition « [Multiply](#multiply) » à l'aide des valeurs « 1,0,0,0 ».

  magick gradient_dst.png gradient_src.png \
          -compose Mathematics -define compose:args='1,0,0,0' -composite \
          mathematics_multiply.png

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Résultat
---|---|---|---|---

De même, en recherchant ou en déduisant la formule nécessaire, vous pouvez générer d'autres méthodes de composition, telles que… [Screen](#screen) : 1-(1-Sc)*(1-Dc) => -Sc*Dc + Sc + Dc => -1,1,1,0 |

  magick gradient_dst.png gradient_src.png \
          -compose Mathematics -define compose:args='-1,1,1,0' -composite \
          mathematics_screen.png

[IM Output]
Ou « [LinearLight](#linearlight) », qui est directement défini à l'aide des arguments « 0,2,1,-1 »… |

  magick gradient_dst.png gradient_src.png \
          -compose Mathematics -define compose:args='0,2,1,-1' -composite \
          mathematics_linearlight.png

[IM Output]
De même, vous pouvez générer d'autres méthodes de composition, telles que… Méthode de composition | Arguments Mathematics
---|---
[Multiply](#multiply) | 1,0,0,0
[Screen](#screen) | -1,1,1,0
[Exclusion](#exclusion) | 0,1,1,-1
[Linear_Dodge](#lineardodge) | 0,1,1,0
[Linear_Burn](#linearburn) | 0,1,1,-1
[Linear_Light](#linearlight) | 0,2,1,-1
D'autres méthodes de composition nécessitent l'usage de carrés, de racines carrées, de divisions, voire de multiples fonctions spéciales définies par morceaux et de conditions, ce qui les empêche d'être définies à l'aide de la simple fonction polynomiale lisse que fournit cette méthode. Vous pouvez également créer de nouvelles méthodes de composition, par exemple une variante étendue de LinearLight… |

  magick gradient_dst.png gradient_src.png \
          -compose Mathematics -define compose:args='0,1,1,-0.5' \
          -composite  mathematics_linearlight_2.png

[IM Output]
Cette composition « maison » particulière est importante comme moyen d'Ajouter des dégradés biaisés tels que des ondes sinusoïdales. Ou une autre variante utilisable pour des « effets d'éclairage »… |

  magick gradient_dst.png gradient_src.png \
          -compose Mathematics -define compose:args='0,1,.5,-.25' \
          -composite mathematics_linearlight_3.png

[IM Output]
La méthode de composition mathématique est particulièrement importante car elle vous permet de réaliser des types spéciaux de Mathématiques sur les dégradés qui seraient autrement très complexes à obtenir en plusieurs étapes individuelles. | La méthode de composition « [Mathematics](#mathematics) » a été ajoutée à la version 6.5.4-3 d'IM. Et elle n'est actuellement disponible qu'à l'aide de l'opérateur « -compose ». Elle n'est pas disponible depuis la commande « magick composite » en raison de son besoin d'arguments.
---|---

Change_Mask (rendre transparents les pixels similaires)

Il s'agit d'une méthode inhabituelle qui ne rendra totalement transparents que des pixels spécifiques de l'image de destination. C'est-à-dire les pixels de l'image de destination qui correspondent à l'image source donnée, selon le réglage courant du Facteur de flou (Fuzz). Cela peut servir, par exemple, à réintroduire de la transparence dans une image qui avait été superposée sur un arrière-plan complexe (mais très différent). Par exemple, c'était exactement le problème présenté par Jesper Eije

  magick overlay_figure.gif   overlay_bgnd.gif  \
          -compose ChangeMask  -composite  overlay_removed.png

[IM Output] [IM Output] [IM Output]

Facile. Notez que, comme les couleurs des images JPEG présentent souvent de légères variations dues à la nature avec perte de ce format de fichier, un petit réglage du Facteur de flou (Fuzz) sera nécessaire pour faire correspondre des couleurs très proches. De plus, si la partie modifiée de l'image se trouve correspondre à la couleur ou au motif de l'arrière-plan, vous obtiendrez des « trous » dans l'image ou le masque résultant ; la prudence est donc toujours de mise lorsqu'on l'utilise avec des images très similaires. En intervertissant les deux images, de sorte que l'image d'arrière-plan soit donnée comme image de destination, vous pouvez extraire les parties de l'arrière-plan qui ont été remplacées ou modifiées par l'image superposée. |

  magick overlay_bgnd.gif  overlay_figure.gif \
          -compose ChangeMask  -composite  overlay_changed.png

[IM Output]
Notez que le résultat n'est qu'un masque de forme transparent de l'image d'arrière-plan d'origine, où les pixels similaires sont simplement effacés vers la transparence. Aucune tentative n'est faite pour générer des transparences partielles ou pour modifier des couleurs, ce qui pourrait donc laisser un « halo » de couleurs d'arrière-plan légèrement différentes autour de l'image, là où la superposition d'origine et la couleur d'arrière-plan se fondaient ensemble. Comme cette méthode de composition ne fait qu'« effacer » les pixels vers la transparence totale, un canal alpha sera toujours ajouté à l'image résultante. La couleur de l'image de destination n'est toutefois pas effacée, contrairement à ce qui se passe dans la plupart des autres méthodes de composition alpha. Vous pouvez donc inverser le canal alpha pour obtenir les couleurs inchangées. |

  magick overlay_figure.gif overlay_bgnd.gif -compose ChangeMask  -composite \
          -channel A -negate      overlay_unchanged.png

[IM Output]
Dans ce cas, l'ordre des images d'entrée n'a pas d'importance, sauf si un grand Facteur de flou (Fuzz) a été défini. Rappelez-vous que les couleurs proviendront de l'image de destination, la différence entre les images définissant le masque de forme résultant. Pour plus d'informations sur ces problèmes, voir Suppression de l'arrière-plan. Le résultat est souvent d'une utilité directe limitée. Il peut cependant servir à générer des masques bitmap des changements entre les images (d'où son nom). | _La méthode de composition « [ChangeMask](#changemask) » a été ajoutée à IM v6.3.4, pour fournir une méthode d'Optimisation de la transparence des animations GIF. Aucune autre méthode de composition existante ne fournissait les exigences nécessaires sans combiner 3 méthodes de composition ou plus. En particulier l'exigence booléenne (ou de seuillage par facteur de flou) requise pour l'optimisation de la transparence.

Le résultat est toutefois si utile en soi qu'il a été rendu disponible pour un usage direct par les utilisateurs, ce qui a donné son nom à cette méthode de composition plutôt complexe._
---|---

Méthodes d'effet par mappage d'image

Il existe également deux méthodes spéciales qui ne sont pas à proprement parler des méthodes de composition. Plutôt que de combiner directement les deux images pixel par pixel, l'image source ou de superposition est une carte de contrôle spéciale, pour un effet plus large. Bien que les méthodes qu'elles représentent soient relativement simples, leur usage est si complexe qu'elles disposent de leur propre section d'exemples. Effets de mappage d'image. Ces méthodes spéciales comprennent… La méthode « Blur » fournit un moyen de flouter les images de différentes façons, pixel par pixel. Elle peut générer une large gamme d'effets de flou « maison ». Voir Mappage de flou variable pour les détails. La méthode « Displace », quant à elle, fournit une technique de déplacement de pixels à la fois absolue et relative, qui génère non seulement des méthodes de distorsion d'image spécifiques, mais aussi des effets de verre, de lentille et d'ondulation. Voir Mappage de distorsion et de déplacement pour les détails.