⚠️ Este es un sitio de traducción no oficial, sin relación con ImageMagick Studio LLC. Para información autorizada, consulte la página original (https://usage.imagemagick.org/compose/index.html).

Ejemplos de ImageMagick -- Composición de imágenes

Prefacio e índice de los ejemplos de ImageMagick
La composición de imágenes en IM

La composición de imágenes en IM

La composición de imágenes es el proceso de fusionar dos (y solo dos) imágenes de diversas maneras. Está asociada a la composición alfa, que describe el resultado en función de qué parte de la superposición es transparente. La composición de imágenes se usa para mezclar y promediar imágenes, transferir canales de imagen, recortar, unir o superponer segmentos de imagen de formas irregulares. O bien como parte de operaciones matemáticas complejas. Una buena introducción alternativa a la composición de imágenes es SVG Compositing in 30 Minutes. O puedes descubrir los detalles matemáticos precisos leyendo la página SVG Alpha Compositing, que describe los métodos de composición de imágenes más importantes. Los siguientes comandos son los dos métodos directos de 'composite' de dos imágenes disponibles en ImageMagick...

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

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

El comando "magick composite" es el método convencional de composición en IM. Que exista un comando dedicado demuestra lo importante que es la composición de imágenes. El operador "[-composite](https://imagemagick.org/command-line-options/#composite)" de "magick" también puede hacer composición de imágenes como parte de una tarea de procesamiento de imágenes más amplia. </> Observa el orden invertido de las imágenes al usar "magick". El orden es práctico, ya que por lo general trabajas sobre un lienzo principal sobre el que preparas y fusionas imágenes para formar una nueva imagen. El orden de las imágenes es importante. Pueden revisarse ejemplos prácticos de ambas técnicas (y más) en Capas de múltiples imágenes, cuya lectura se recomienda antes de continuar.

Definiciones y términos

La imagen más importante es la imagen de fondo (background), también llamada a menudo imagen de destino (destination), que es la imagen modificada por la composición. El fondo no solo determina el tamaño final de la composición, sino que también se conservan sus metadatos, como 'comments', 'labels', 'density', 'profiles' y demás. Su posición es fija y suele formar el lienzo que estás construyendo, de ahí el nombre fondo. ¡Recuérdalo!

La imagen de superposición (overlay), o imagen de origen (source), controla cómo el método "[-compose](https://imagemagick.org/command-line-options/#compose)" debe modificar la imagen fija de fondo o destino. La imagen puede reposicionarse respecto a la imagen fija de fondo (normalmente mediante los ajustes "[-geometry](https://imagemagick.org/command-line-options/#geometry)" y "[-gravity](https://imagemagick.org/command-line-options/#gravity)"). Sin embargo, tanto la imagen de superposición como cualquier metadato que contenga se eliminan cuando termina la operación de composición.

A veces se añade una tercera imagen de máscara (mask) al comando. Esta imagen se usa para definir y controlar qué partes de la imagen de fondo se modificarán, y en qué grado, por la composición resultante. Para más detalles, consulta Enmascaramiento en composite más abajo. A partir de IM v6.5.3-4, el ajuste de define especial "compose:outside-overlay" (consulta Ajuste Outside-Overlay) puede fijarse al valor 'false' para desactivar cualquier modificación de la imagen de fondo fuera del área rectangular que cubre la imagen de superposición. Sin esto, algunos métodos de composición limpiarán las áreas no cubiertas por la superposición, como parte de la definición de la composición.
El método real de composición se controla con el ajuste "[-compose](https://imagemagick.org/command-line-options/#compose)", que toma por defecto el valor 'Over'. Es decir, la imagen de origen se dibuja sobre (Over) la imagen de fondo, que es lo que la mayoría de la gente entiende al hacer composición de imágenes. La mayor parte de esta sección de los ejemplos de IM se dedica a detallar qué hacen los distintos 'métodos' de composición y cómo puedes aprovecharlos. Para ver los resultados de los métodos de composición, consulta Tablas de los métodos de composición. Las tablas no ilustran el uso previsto del método, solo la salida en bruto a partir de varias imágenes de prueba. El método de composición no distingue entre mayúsculas y minúsculas, y los caracteres '_' o '-' son opcionales. Por ello, el método de composición "Dst_Over" también puede especificarse como: "dst_over", "dst-over", "DstOver", "dstover" o incluso "dstOVER". Todos significan lo mismo. Además, los métodos de composición 'Over', 'ATop', 'In' y 'Out' son abreviaturas de los nombres más explícitos: 'Src_Over', 'Src_ATop', 'Src_In' y 'Src_Out'. Además de la larga lista de métodos "[-compose](https://imagemagick.org/command-line-options/#compose)", hay algunos que requieren argumentos numéricos adicionales para funcionar correctamente. En el comando "magick composite" estos argumentos se pasan mediante las opciones especiales: "[-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)" y "[-distort](https://imagemagick.org/command-line-options/#distort)". A partir de IM v6.5.3-4, el comando "magick" puede pasar argumentos especiales al operador "[-composite](https://imagemagick.org/command-line-options/#composite)" mediante el ajuste de define "compose:args". Para ver ejemplos, consulta los métodos especiales Dissolve y Blend más abajo.

Operadores de composición de imágenes

Aparte de los dos estilos directos de composición de dos imágenes mostrados arriba, hay otras operaciones de imagen que también usan la composición alfa como parte de su procesamiento interno. Estas operaciones se ven afectadas por el ajuste "[-compose](https://imagemagick.org/command-line-options/#compose)" actual, aunque usarán su propio posicionamiento interno o la técnica de posicionamiento por desplazamiento del lienzo virtual de las imágenes por capas. Aquí tienes una lista de todos los operadores que se sabe que se ven afectados por el ajuste de composición...

Composición de pares de imágenes Ejemplos prácticos con los principales operadores de composición de imágenes, tanto el comando primitivo "magick composite" como el operador -composite" de "magick". Estos métodos de bajo nivel usan los ajustes Geometry/Gravity para determinar la posición de la imagen superpuesta. Operadores de capas Los operadores de 'imagen por capas' "[flatten](layers.html#flatten)", "[mosaic](layers.html#mosaic)" y "[-layers merge](layers.html#merge)" superponen todas las múltiples imágenes de la secuencia actual sobre un único lienzo nuevo, cuyo tamaño y posición vienen determinados por el operador de capas elegido. Esto usa los ajustes de desplazamiento del lienzo/página virtual para determinar la posición de la imagen superpuesta. Operadores de expansión de bordes Operadores que superponen cada imagen individual sobre lienzos preparados internamente. Esto incluye operadores como "[-border](https://imagemagick.org/command-line-options/#border)", "[-frame](https://imagemagick.org/command-line-options/#frame)" y "[-extent](https://imagemagick.org/command-line-options/#extent)". (Consulta Añadir/quitar bordes de imagen). No se usa información de posicionamiento, aunque "[-extent](https://imagemagick.org/command-line-options/#extent)" sí hará uso de los desplazamientos de gravity y geometry para superponer sobre una imagen de fondo de color sólido. Dibujar imágenes El método de superposición de imágenes "[-draw 'image...'](https://imagemagick.org/command-line-options/#draw)" superpondrá una única imagen de origen externa sobre una lista de imágenes de destino. Es la única técnica de composición de imágenes disponible para "[mogrify](basics.html#mogrify)". Obtiene la imagen de 'superposición' de una fuente externa, lo que le permite superar la limitación de ese comando de no tener operadores de lista. La información de tamaño y posición también la proporciona el usuario, y puede verse afectada por gravity. Composición de capas multilista El operador "[-layers composite](anim_mods.html#composite)" te permite componer dos listas separadas de múltiples imágenes, un par de imágenes a la vez, para formar una nueva secuencia multiimagen fusionada. También compone una secuencia de imágenes con una sola imagen (que puede ser una imagen estática de 'superposición' o una imagen estática de 'destino'). Es además el ÚNICO operador de composición que te permite usar TANTO el desplazamiento "[-geometry](https://imagemagick.org/command-line-options/#geometry)" universal afectado por "[-gravity](https://imagemagick.org/command-line-options/#gravity)" (globalmente) COMO los desplazamientos de lienzo virtual "[-page](https://imagemagick.org/command-line-options/#page)" de las imágenes individuales, a partir de esa posición global. Este operador de composición es especialmente importante para componer animaciones de imagen, u otras secuencias de imagen, como un todo, en lugar de necesitar un script que procese cada par de imágenes por separado.


Posicionar la imagen superpuesta

Ajustes de Geometry/Gravity en composite

En la composición alfa normal, el ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)" se usa con "[-gravity](https://imagemagick.org/command-line-options/#gravity)" para posicionar la imagen de origen respecto a la imagen de destino. El uso de estos ajustes se trata con gran detalle en Posicionamiento de imágenes mediante Gravity. Ten en cuenta que el componente de tamaño de "[-geometry](https://imagemagick.org/command-line-options/#geometry)" es especial, ya que redimensionará la imagen (geometry). En "[composite](../static/img/compose/composite)" redimensiona la imagen de origen, pero en "[convert](../static/img/compose/magick)" se redimensiona la última imagen de la secuencia. Técnicamente, esto es un aspecto distinto de la composición de imágenes. Consulta Redimensionado por Geometry y Superponer imágenes con Composite. En la composición alfa solo intervienen dos imágenes, la de 'origen' y la de 'destino' (o 'fondo'), aunque también puede proporcionarse una tercera imagen de máscara que limite el área afectada por la composición.

Desplazamientos de lienzo/página por capas

La composición de imágenes por capas usa una filosofía muy diferente. Todas las imágenes (tantas como quieras) se tratan por igual en el orden dado. Todas tienen un "[-page](https://imagemagick.org/command-line-options/#page)" o desplazamiento de página que posiciona la esquina superior izquierda de cada imagen respecto a un 'origen' de lienzo virtual (el desplazamiento por defecto), pero sin gravity. Para procesar varias imágenes se genera una nueva imagen de fondo con el color "[-background](https://imagemagick.org/command-line-options/#background)" actual y un tamaño que depende de la operación que se realice. Esta se asume como la imagen (lienzo) de 'destino'. TODAS las imágenes se componen sobre este nuevo lienzo una a una en secuencia. Aunque solo se den dos imágenes, igualmente se crea una nueva imagen y se aplican dos composiciones separadas. Es decir, puede ser lento. Todas las imágenes se tratan como imágenes de 'origen', y el orden en que se listan determina el resultado. Sin embargo, el desplazamiento de 'capa' NO se ve afectado por gravity. Como cada imagen puede tener un 'desplazamiento de lienzo' distinto, la composición de múltiples imágenes se aplica mejor usando los operadores de capas de imagen, así como la composición de secuencias multiimagen para animaciones. Los dos estilos son técnicas de posicionamiento muy diferentes, y es importante que uses el estilo correcto para las técnicas de composición que pienses utilizar.

Ambas técnicas de posicionamiento

Solo una técnica de composición, el operador de composición por capas de listas multiimagen, te permite usar AMBOS métodos de posicionamiento simultáneamente. Primero, las dos listas se posicionan globalmente con "[-geometry](https://imagemagick.org/command-line-options/#geometry)" y "[-gravity](https://imagemagick.org/command-line-options/#gravity)", lo que se aplica al tamaño del lienzo virtual de la primera imagen de cada lista. Luego, cada imagen individual de la lista se desplaza con "[-page](https://imagemagick.org/command-line-options/#page)" a partir de esa posición global para determinar su posición final. Por supuesto, si una imagen superpuesta no cabe en una imagen de destino concreta de las proporcionadas, será recortada por esa imagen. Por ello, suele ser buena idea usar solo imágenes totalmente coalescidas como imagen(es) de destino, con el tamaño adecuado necesario. Las imágenes resultantes pueden, claro está, recortarse de nuevo después.


Métodos de composición alfa de Duff-Porter

Los métodos de composición de imágenes de Duff-Porter son un conjunto tradicional de 12 métodos muy bien definidos. Se conocen como composición alfa porque las imágenes se fusionan según algún aspecto de la transparencia de la imagen o 'canal alfa'. Puedes encontrar sus definiciones matemáticas en el documento SVG Alpha Compositing. Aquí tienes una tabla clásica que muestra los resultados de estos 12 métodos con dos imágenes triangulares. [IM Output] Consulta también Tablas en bruto de los métodos de composición, con diagramas que muestran más métodos de composición con distintas formas de imagen y degradados. El método de composición por defecto (cuando no se define nada) es 'Over', y es lo que la mayoría de la gente suele querer al componer imágenes. Para entender y recordar lo que hace cada uno de los métodos de composición anteriores, la imagen resultante sería la misma que si dijeras...

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


****
Es decir, la imagen resultante del método 'ATop' equivale a "la imagen superpuesta 'ATop' de la imagen de fondo". Significa que la imagen de fondo conservará su 'forma', pero los colores de la imagen de origen se situarán 'encima' del fondo. Sin embargo, recuerda que el orden de las imágenes se invierte al usar el operador "[magick -composite](https://imagemagick.org/command-line-options/#composite)". Estos 12 métodos definen no solo cuál de las dos imágenes es 'visible' en el resultado, sino también cómo afecta a la parte de la imagen que NO está cubierta por la imagen de origen. Es decir, si el 'fondo' original se deja tal cual o se limpia por completo. Hice a propósito la imagen de 'destino' de la tabla anterior más grande para que puedas ver si el resto de la imagen se limpió o no. Estos métodos de 'limpieza' son: '[Src](#src)', 'In', '[Dst_In](#dstin)', 'Out', 'Dst_ATop' y '[Clear](#clear)'. A partir de IM v6.5.3-4 puedes usar un ajuste de define "compose:outside-overlay=false" para evitar que la composición de Duff-Porter limpie la imagen de destino fuera del área superpuesta. Consulta los ejemplos en los métodos de composición '[Copy](#copy)' y '[Clear](#clear)', y el ajuste Outside-Overlay, para más detalles. Ten en cuenta que '[Copy](#copy)' es un '13.º' método de composición especial que proporciona IM. Básicamente equivale a una composición '[Over](#over)', pero con limpieza del fondo en el área superpuesta. Sin embargo, en términos de implementación es una composición '[Src](#src)' con outside-overlay (o limpieza del fondo) desactivado. ImageMagick v5 y anteriores no limpiaban ninguna área no cubierta por la imagen de origen. Esto era un manejo incorrecto de los operadores de composición de Duff-Porter, y se corrigió durante el desarrollo de IM v6.
Uno de los aspectos más importantes de los métodos de composición alfa de Duff-Porter es que nunca harán visible ningún 'píxel de color totalmente transparente'. Esto es importante, porque una parte totalmente transparente de la imagen tiene un color indefinido. Podría contener CUALQUIER valor de color sin afectar al resultado visible de la imagen. Consulta Controlar la transparencia de la imagen para más detalles sobre 'el manejo del canal de transparencia'. Por eso la composición de Duff-Porter suele ser el método de enmascaramiento preferido, frente a la alternativa '[CopyOpacity](#copyopacity)', que reemplaza por completo el canal alfa de una imagen y puede hacer visibles los colores invisibles e indefinidos.

Over (superponer la imagen sobre el fondo)

Este es el método de composición por defecto, el que todos imaginan al superponer una imagen sobre otra. La imagen superpuesta se coloca 'sobre' la imagen de fondo del mismo modo que una 'celda de animación' o una 'transparencia de retroproyector' puede colocarse sobre una escena o imagen de fondo. Es tan común que dudo que necesite decir mucho más. Así que presentemos un ejemplo de superponer la imagen de una sola letra sobre una imagen de fondo. |

  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 superposición puede centrarse con gravity, como arriba, o colocarse con precisión mediante un ajuste "[-geometry](https://imagemagick.org/command-line-options/#geometry)". Si se coloca fuera de los límites del fondo, se recortará o se ignorará, según corresponda. En este ejemplo, la imagen se superpone con el operador "convert -composite", pero posicionada a media altura por encima del fondo. Observa la inversión del orden de las imágenes. |

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

[IM Output]

Dst_Over (poner la imagen 'debajo' del fondo)

Como otros métodos 'Dst_', este funciona casi exactamente igual que la versión 'Src_' del método, pero con las imágenes de superposición y fondo intercambiadas. Por ello, '[Dst_Over](#dstover)' equivale a colocar la imagen de origen superpuesta 'debajo' del destino. El resultado es que solo serán visibles las partes de la imagen de origen o superposición que no oculte la imagen de destino o fondo, asomando por debajo. Esto NO es exactamente lo mismo que '[Over](#over)' con las imágenes de los argumentos intercambiadas, ya que el tamaño, el posicionamiento y los demás metadatos de la imagen siguen proviniendo de la imagen de fondo o destino. Recuerda que el tamaño de la imagen de salida es el mismo que el de la imagen de 'fondo', y la posición de la imagen de origen es relativa al fondo (mediante "[-geometry](https://imagemagick.org/command-line-options/#geometry)" y "[-gravity](https://imagemagick.org/command-line-options/#gravity)"). Por ejemplo, aquí superponemos una 'A' negra como etiqueta 'debajo' de nuestra A blanca original. Podemos reposicionar la A negra respecto a la A blanca de fondo. Como ves, esto es estupendo para añadir una sombra dura, sin tener que preocuparse de ampliar el tamaño de la imagen. |

  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]
Lo importante a destacar es que el tamaño del fondo se conserva, mientras que la posición de la superposición, relativa al fondo, puede modificarse y es recortada por el fondo. Esto es lo que hace de este operador algo tan importante y útil. El ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" de "magick composite" también hace que esta forma de 'over' sea muy útil como manera de teselar por debajo de una imagen. Por ejemplo, tesela el patrón de tablero de ajedrez incorporado debajo de la letra con sombra que acabamos de crear. |

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

[IM Output]

Src ('recortar' a las dimensiones de la imagen de fondo)

Este operador reemplaza por completo la imagen de fondo con la imagen superpuesta. Los colores y la transparencia del fondo se descartan por completo, dejando una imagen en blanco del mismo tamaño que el destino original sobre la que se aplica la imagen de origen. ¿Y para qué sirve eso? Pues para dos cosas. Primero, reemplazas de hecho la imagen de fondo por la imagen de origen, pero conservando todos los metadatos asociados a la imagen de fondo original. Es decir, la imagen cambia, pero los metadatos no. Segundo, el tamaño de la imagen final no cambia aunque sí lo haga su contenido. Es decir, la imagen resultante tiene el mismo tamaño que el fondo original. Por ello, puedes usar este operador para recortar o añadir un borde a la imagen de origen o superpuesta de modo que pase a tener el mismo tamaño que la imagen de fondo dada (junto con los metadatos del fondo). Por ejemplo, supón que quieres crear una imagen de plasma y recortarla para que tenga el mismo tamaño que la imagen rose incorporada. Esto te permite hacerlo sin necesidad de saber el tamaño exacto de la imagen rose. |

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

[IM Output]
Por supuesto, lo anterior equivale a un "[-crop](https://imagemagick.org/command-line-options/#crop)" de la imagen de plasma, no a un 'resize'. Los metadatos de la imagen original también se conservan. Es decir, aunque ahora sea una imagen de plasma, los metadatos de la imagen dicen que sigue siendo una imagen 'rose' y que provino de la fuente de imagen "rose:".
Si la superposición es más pequeña, el resto de la imagen de fondo se reemplaza con transparencia para rellenarlo. Ten en cuenta, no obstante, que el fondo debe tener un canal alfa, o rellenará el espacio sobrante con negro (el color que tienen 'none' o 'transparent' sin ningún canal alfa). |

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

[IM Output]
[IM Output]

Copy (copiar o reemplazar la imagen)

Este operador no es uno de los 12 métodos de composición 'Duff-Porter', razón por la que no aparecía en la tabla anterior. No obstante, es muy importante. Funciona exactamente como el método de composición "Src", pero no toca la imagen de fondo fuera del área superpuesta. Es decir, limita su capacidad de copia solo al área superpuesta y nada más. Esto te permite recortar una pequeña sección de una imagen mayor, trabajar sobre la imagen más pequeña por rapidez y luego 'copiar' los resultados de vuelta sobre la imagen mayor sin tocar las demás áreas de esa imagen. Esto, a su vez, te permite optimizar el procesamiento de imágenes muy grandes. Aquí tienes el mismo ejemplo que usé arriba, pero con '[Copy](#copy)' en lugar de '[Src](#src)', que muestra cómo IM no perderá tiempo limpiando el resto del fondo como exige el algoritmo de 'Duff-Porter'. |

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

[IM Output]
Este operador es además muy parecido a '[Over](#over)', salvo que también se copia la transparencia de la imagen de origen, reemplazando por completo la imagen de fondo. Si no hay transparencia, funcionaría exactamente como '[Over](#over)'. Internamente, modifica el ajuste especial de control de composición "outside-overlay (consulta a continuación).

Ajuste Outside-Overlay

A partir de IM v6.5.3-4, la posibilidad de controlar si un método de composición afectará también a las áreas fuera del área superpuesta se hizo controlable por el usuario mediante define de "compose:outside-overlay". Está 'activado' por defecto, pero puedes desactivarlo fijando su valor a "false". Por ejemplo, aquí tienes un equivalente del método de composición Copy pero usando el más tradicional método de composición Src.. |

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

[IM Output]
Para ver un ejemplo del uso de este indicador, consulta Superposiciones de esquina con PageCurl.

Outside-Overlay frente a 'clip-to-self' de SVG

El define "compose:outside-overlay" es en muchos aspectos similar a usar el atributo 'clip-to-self' de SVG. Ambos restringen la composición solo a la región superpuesta, sin afectar al resto de la imagen de destino. Sin embargo, 'clip-to-self' de SVG se aplica solo al área pintada (como una máscara), mientras que el ajuste 'outside-overlay' de IM se aplica a toda el área rectangular de la imagen de origen donde se superpone a la imagen de fondo. Esto no queda muy claro en el manual de composición de SVG, ya que los ejemplos dados no se explican muy bien, lo que los hace muy confusos. Pero si quieres intentar entenderlos, consulta la propiedad 'clip-to-self' de composición SVG o Entender la composición de SVG 1.2, clip-to-self. Ten en cuenta que también puede usarse una máscara de escritura para lograr este tipo de control, pero con áreas con forma según la máscara dada. En este sentido se parece mucho más al atributo 'clip-to-self' de SVG, donde la imagen de origen se usa también como máscara de escritura.

Dst (una composición 'sin efecto')

Este operador no hace nada. La imagen de origen, o superposición, se ignora por completo y la imagen de destino, o fondo, se deja sin cambios. La utilidad real del método es como medio para 'desactivar' una operación de composición alfa en otros operadores de imagen. Por ejemplo, usamos el operador Frame para enmarcar nuestra imagen rose (con un fondo transparente), pero luego usamos "-compose Dst" para evitar que la imagen se añada al marco. En otras palabras, solo usamos la imagen rose para fijar el tamaño del marco interno del resultado. El marco, y solo el marco, es el resultado. |

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

[IM Output]
La operación especial Alpha Set garantiza que haya un canal alfa disponible en la imagen, o acabarás con un centro negro en lugar de uno transparente. El "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" define el color del interior del marco que normalmente se coloca debajo de la imagen de origen. El método '[Dst](#dst)' también puede ser útil en un script para desactivar una composición alfa dentro de un comando grande y complejo sin necesidad de crear dos comandos de IM distintos.

Dst_In (o 'enmascarar' el fondo con el origen)

El método '**Dst_In**' es como usar la imagen de origen como una máscara 'Copy_Opacity' para la imagen de fondo. Eliminará la forma de la imagen superpuesta de la imagen de fondo, como un cortador de galletas que recorta la forma de una galleta de la masa. Por ejemplo, usemos la elegante 'A' de antes como máscara para recortar su forma de la imagen rose. |

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

[IM Output]
A diferencia del método '[Copy_Opacity](#copyopacity)', NO puedes usar una imagen en escala de grises como máscara, ya que en esta operación solo se usa el canal alfa de la imagen superpuesta. Cualquier color de la superposición se ignora por completo. | Lo único que hacen en realidad todos los métodos 'Dst_In y 'Src_In' es multiplicar los canales alfa de las dos imágenes. El color de la imagen apropiada (según el método) se conserva.
---|---

Dst_Out (o una operación de 'borrado')

Siguiendo la metáfora de la 'masa de galleta' de '[Dst_In](#dstin)', el resultado del método '**Dst_Out**' es la masa que queda una vez recortada la galleta. Puede usarse para recortar agujeros, o dar bocados, en la imagen de fondo usando la forma de la superposición. De nuevo, cualquier color de la superposición se ignora por completo. |

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

[IM Output]
Las fórmulas matemáticas de estos dos métodos de composición están diseñadas explícitamente para que, si usas '[Dst_In](#dstin)' y '[Dst_Out](#dstout)' sobre el mismo conjunto de imágenes, puedas volver a encajarlas (con el método '[Plus](#plus)') como un rompecabezas. Por ejemplo, aquí 'sumamos' (con composición '[Plus](#plus)') las dos últimas imágenes que generamos arriba. Esta imagen es exactamente la misma (hasta el píxel) que la imagen 'rose:' original. |

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

[IM Output]
Borrar parte de una imagen no es tarea fácil en ningún programa gráfico. Por ejemplo, una operación "[-draw](https://imagemagick.org/command-line-options/#draw)" solo puede añadir color a una imagen. No puede quitar color una vez aplicado al lienzo. Piensa en un pintor que pinta un anuncio en una puerta o ventana de cristal. Puede añadir pintura, pero no puede quitar pintura pintando por encima. Al dibujar la forma que quieres borrar sobre un lienzo transparente, puedes usar '[Dst_Out](#dstout)' para eliminarla de tu imagen de trabajo. Es un poco como si nuestro pintor limpiara con cuidado la pintura húmeda con un trapo de forma especial. La forma puede usarse para quitar todo el color o parte de él, dejándolo total o parcialmente transparente. Por ejemplo, supón que quieres dibujar el símbolo de una luna creciente sobre un lienzo transparente. Este método de composición alfa hace fácil dibujar esta forma difícil superponiendo dos círculos. |

  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 segunda imagen debe crearse y dibujarse entre paréntesis. Si no lo haces, descubrirás que "[-draw](https://imagemagick.org/command-line-options/#draw)" dibujará TANTO sobre la imagen superpuesta COMO sobre tu fondo original, lo cual obviamente es incorrecto. Si no usaras paréntesis, encontrarías un círculo de píxeles negros semitransparentes alrededor de la parte borrada de la imagen. Lo sé, me pasó al crear este ejemplo, para mi propio fastidio.
---|---

ATop ('Over', pero recortado a la imagen de fondo)

Como '[Over](#over)', pero limita el resultado a la forma original de la imagen de fondo. En otras palabras, el canal alfa del destino no cambia, pero los colores de la imagen quedan cubiertos por las partes no transparentes de la imagen de origen. Si la imagen de fondo es totalmente opaca (sin transparencia), esta operación actuará exactamente como la composición normal '[Over](#over)'. Solo difiere cuando el fondo contiene transparencia, que también recorta la superposición. Lo que la hace útil es para superponer efectos de iluminación y sombreado limitados al objeto (forma) del destino. Por ejemplo, digamos que tenemos un círculo rojo y queremos añadirle un brillo como si fuera una bola tridimensional. Podemos crear el círculo y el brillo, y luego superponer el brillo con '[ATop](#atop)' para limitarlo al círculo. |

  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 creación del brillo blanco se hizo con "-negate" para asegurar que toda la imagen fuera realmente blanca. Esto se usó para evitar un fallo en el operador "-blur", que ya se ha corregido en la versión 6.2.4 de IM. Consulta Fallo de Blur con transparencia para más detalles sobre este antiguo fallo.
---|---
De forma similar, podemos añadir una sombra difusa a nuestra bola recortada a los límites de la propia bola para que parezca aún más tridimensional. Dejo como ejercicio al lector averiguar cómo logra este resultado el siguiente comando. |

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

[IM Output]
Con un poco más de cuidado en las imágenes preparatorias, la imagen anterior puede hacerse aún más realista. Para mostrar el uso de este método de composición, no está mal. Pueden verse más ejemplos del uso del método de composición '[ATop](#atop)' en Generar logotipos 3D.

Clear (limpiar el fondo; ignorar la imagen superpuesta)

Este es un método de composición inusual que esencialmente ignora por completo la imagen superpuesta y solo limpia la imagen de fondo. Esto lo convierte en un método ideal para crear un lienzo transparente o negro, del mismo tamaño que la imagen de fondo, para proyectos complejos. Como la imagen superpuesta no se usa, una imagen "null:" de un solo píxel es una buena superposición a utilizar. |

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

[IM Output]
Por supuesto, la operación Alpha Set (aunque no es necesaria en este caso) garantiza que el destino tenga un canal alfa que pueda usarse al limpiar la imagen a transparencia. Si específicamente desactivas el canal alfa, el operador limpiará la imagen a negro, debido a las matemáticas implicadas. |

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

[IM Output]
El ajuste de define especial "compose:outside-overlay" te permite limitar esta limpieza solo al área superpuesta, independientemente de si la imagen superpuesta contiene transparencia o no. Por ejemplo: |

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

[IM Output]

Xor (limpiar el área compartida)

Este es un método de composición muy extraño y poco usado. Superpone dos imágenes y luego limpia a transparencia el área solapada. |

  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]
La cosa se pone aún más interesante cuando se aplica xor de una tercera imagen sobre el resultado anterior. |

  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]
Como ves, superponer varias imágenes puede producir efectos maravillosos: cualquier número par de imágenes solapadas quedará transparente, mientras que cualquier número impar de imágenes solapadas hará que se vea la última imagen superpuesta.

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

Métodos de composición matemáticos

Este grupo de métodos de composición te permite realizar operaciones matemáticas con las imágenes. Puede no parecer muy útil, pero para la manipulación de bajo nivel de imágenes los métodos te permiten hacer cosas que normalmente no se te ocurrirían. A diferencia de los anteriores métodos de composición de imágenes de Duff-Porter, por lo general son métodos en escala de grises. Es decir, suelen aplicarse a imágenes en las que una o ambas están en escala de grises, y normalmente no contienen transparencia. Lo cual no significa que no pueda usarse transparencia (consulta Composición matemática y alfa más abajo), pero no es una práctica muy común. El uso por defecto de las composiciones matemáticas lo define la especificación del formato de archivo de imagen SVG. Puedes leer más sobre ellas en SVG Composition Guide (2009), y también en Pegtop Blend Modes y SimpelFilter: Photoshop Blend Modes. La imagen de degradado especial que ves junto a cada uno de los siguientes operadores visualiza el operador en términos de cómo afecta a los valores de color. El resultado se produce componiendo dos imágenes de degradado de la siguiente forma...

  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]
Origen | | [IM Output]
Destino | | [IM Output]
Resultado
---|---|---|---|---

Básicamente, si usas el valor de color del píxel de la superposición (origen) en vertical, y el del píxel del fondo (destino) en horizontal, puedes buscar el valor que resultará de aplicar ese operador con esos valores. En el ejemplo anterior verás que '[Multiply](#multiply)' generalmente oscurecerá las imágenes, y que cualquier valor negro (0) en cualquiera de las imágenes de entrada producirá un resultado negro. Algo que puede ser muy útil. [IM Output]

Multiply ( ) (hacer transparente el blanco para diagramas/texto)

Es uno de los métodos de composición más útiles, pero más infravalorados, y es una simple multiplicación de las dos imágenes. Su fórmula es, naturalmente: _Src_ *_Dest_ Esto significa que si una de las imágenes es blanco puro, el resultado será la otra imagen. Por otro lado, si una imagen es negra, el resultado será negro. Entre estos extremos, una imagen oscurecerá la imagen de destino en la cantidad dada. Ten en cuenta que 'Multiply' solo oscurecerá una imagen, nunca la aclarará. Es decir, 'atenúa' una imagen hacia el negro, lo que convierte a este método de composición en un estilo de composición de 'quemado' (Burn). (Consulta Métodos de composición de iluminación más abajo) |

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

[IM Output]
[IM Output]
Este método funciona muy bien en muchas situaciones, pero es especialmente bueno cuando una de las imágenes tiene líneas negras (o en escala de grises) sobre un fondo mayormente blanco, como las imágenes de texto. Si ambas imágenes contienen regiones de color, puedes obtener resultados inusuales. En otras palabras, esta técnica es perfecta para superponer imágenes y otros diagramas directamente sobre dibujos lineales con un fondo blanco o de un color muy claro. Por ejemplo, quiero añadir algunos diagramas a una página de texto que se incluirá en una imagen renderizada por trazado de rayos. Puedes ver esta 'página de texto' en las imágenes resultantes de mis Estudios en poliedros. Dadas dos máscaras de imagen en escala de grises, multiply también es una buena forma de borrar partes de una imagen a negro según alguna máscara. Lo hace de forma lineal, por lo que la máscara puede ser una imagen en escala de grises, en lugar de una imagen puramente booleana de activado/desactivado. Consulta Composición matemática. Multiplicar una imagen por sí misma es en realidad una técnica útil para producir un oscurecimiento al cuadrado de una imagen, de modo que los colores brillantes sigan destacando, pero los demás colores se oscurezcan. En realidad, esto equivale a un operador Gamma con un valor de "0.5", o a una operación Evaluate PowerOf con un valor de "2.0". Por ejemplo, consulta un Generador de estrellas, para producir una distribución más realista de las intensidades de las estrellas. O puede usarse sobre imágenes de nubes de satélite antes de superponer el resultado sobre un mapa geográfico. [IM Output]

Screen (hacer transparente el negro para diagramas/texto)

Esto es casi exactamente igual que '[Multiply](#multiply)', salvo que ambas imágenes de entrada se negativizan antes de la composición, y el resultado final también se negativiza de nuevo para devolver la imagen a la normalidad. En términos técnicos, los dos métodos son 'duales' entre sí. Eso hace que su fórmula sea: 1-(1-_Src_)*(1-_Dest_) Esto significa que si una de las imágenes es negro puro, el resultado será la otra imagen. Por otro lado, si una imagen es blanca, el resultado será blanco. Entre estos extremos, una imagen aclarará la imagen de destino en la cantidad dada. Ten en cuenta que una composición 'Screen' solo hará una imagen más brillante, nunca más oscura. Este es un estilo de composición conocido como composición de 'aclarado' (Dodge). (Consulta Métodos de composición de iluminación más abajo) Este método de composición es perfecto para superponer texto blanco sobre un fondo negro, y luego sobre otras imágenes... |

  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]
Consulta Enmascaramiento matemático para ver un ejemplo del uso de esto para superponer una forma blanca sobre una imagen. [IM Output]

Bumpmap (multiplicación en escala de grises)

El método '[Bumpmap](#bumpmap)' es esencialmente igual que '[Multiply](#multiply)', salvo que la imagen de origen se convierte a escala de grises antes de superponerse. En otras palabras, oscurecerá la imagen allí donde la imagen de origen sea oscura. Podrías pensar en esto como un operador de tipo 'multiplicar por intensidad'. Por ejemplo... |

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

[IM Output]
Observa cómo la imagen "hand_point.gif" se pasa a escala de grises antes de aplicarse. Su propósito original es añadir textura (como una textura de papel o tela) a las imágenes. Sin embargo, como solo puede oscurecer imágenes, no es tan útil como el método '[HardLight](#hardlight)', que puede tanto aclarar como oscurecer imágenes (consulta más abajo). [IM Output]

Divide, Divide_Dst, Divide_Src ( ) (eliminar efectos de sombreado)

Las dos imágenes se dividen entre sí. Qué imagen divide a cuál depende de si se aplica 'Divide_Src' o 'Divide_Dst'. La fórmula de 'Divide_Dst' es _Src_ / _Dest_ y la de 'Divide_Src' es _Dest_ / _Src_ Debido al orden de las imágenes normalmente definido en la composición de imágenes, y en el comando "magick composite, el método original 'Divide significaba...

**{_Source_} Divide {_background_}**


****

Es decir, el nombre del método original "Divide' es sinónimo de "Divide_Dst", que significa "dividir por el destino". Es además el operador usado para definir la tabla de degradados mostrada. Ten en cuenta que el orden de las imágenes es muy importante, ya que obtienes resultados muy distintos si se intercambian las imágenes o el operador. Esto ocurre especialmente con el comando "magick", que tiene la imagen de destino antes de la de origen. Recuerda que es la imagen de destino la que definirá el tamaño final real y los metadatos de la composición resultante de las dos imágenes. Recuerda también que es la imagen de origen la que se posiciona respecto a la imagen de destino. Este método de composición tiene su mayor utilidad práctica en la eliminación del viñeteado en fotografías. En el siguiente ejemplo lo usaré como medio de eliminación del fondo.
Como se usan valores de color normalizados que normalmente van de 0.0 (negro) a 1.0 (blanco), la división de hecho aclarará la imagen del numerador, en la cantidad de 'negro' que aparezca en la imagen por la que estás 'dividiendo'. Ahora bien, dividir imágenes de modo que la imagen del 'numerador' (la no especificada por el operador) se aclare, puede sonar raro. Sin embargo, es una operación muy útil. Significa que puedes eliminar de forma efectiva las manchas oscuras de una imagen causadas por viñeteado de la lente, un mal escaneo o el tono adquirido con el paso del tiempo. Por ejemplo, tengo una imagen de texto manuscrito que se escaneó de forma muy tosca (con una cámara digital sin flash, y luego reducida de tamaño para eliminar el ruido digital). El papel tiene los bordes descoloridos y, como no se usó flash, el fondo es muy oscuro y tiene efectos de sombreado porque el papel no estaba completamente plano.

[IM Output]

Simplemente normalizar la imagen para realzar su contraste no ayuda a eliminar el coloreado de los bordes ni otros efectos de sombreado.

  magick text_scan.png -normalize text_scan_norm.png

[IM Output]

Sin embargo, al desenfocar la imagen para eliminar las líneas y luego dividir eso de la original, eliminamos de forma efectiva todos los efectos de sombreado más burdos de la imagen.

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

[IM Output]

El resultado de la división es que el color de fondo se vuelve blanco, mientras que las finas líneas del texto se mantienen claras, aunque ligeramente más 'finas'. Como ves, queda mucho más nítido que solo normalizándolo, aunque también se eliminó parte del antialiasing. Podrían haberse hecho algunos ajustes extra a la imagen divisora, pero está muy cerca de lo esperado. Usar desenfoques más pequeños puede producir una manera alternativa de generar imágenes artísticas de contornos, como se muestra en Colorear imágenes de contorno. Este operador podría combinarse con un generador de degradado de fondo, como Degradados Sparse Color, para generar mejores imágenes 'divisoras' de fondo que simplemente desenfocar toda la imagen.
Los operadores de división son en realidad similares al método de composición '[Color_Dodge](#colordodge)', pero con la imagen divisora negativizada y usada como imagen de origen. Esta es la composición que se usa normalmente en Photoshop, aunque puede requerir que intercambies y negativices las imágenes. Consulta '[Color_Dodge](#colordodge)' para ver equivalencias. | Antes de IM v6.6.8-5 solo se proporcionaba el método '[Divide](#divide)' original (equivalente al más nuevo '[Divide_Dst](#dividedst)').
---|---
[IM Output]

Plus ( ) (sumar colores para formar una mezcla)

Suma los colores de la superposición al fondo. En esencia, hace que las dos imágenes se mezclen por igual. Su fórmula es, naturalmente: _Src_ + _Dest_ Sin embargo, ten en cuenta que si los colores sumados desbordan los límites de color, el color se recortará por los límites normales del rango de color. Por eso la mitad de la imagen en la imagen de degradado resultante es blanco puro, ya que esos valores se recortaron en su valor máximo. Se recomienda precaución para asegurar que la imagen resultante no quede recortada si no es lo deseado. El operador tiene varios usos importantes. Fusionar imágenes que contienen colores de canal separados, pero donde solo el canal individual tiene color. Por ejemplo...

  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]

| Debido al cumplimiento por parte de IM del estándar SVG, 'green' no es un verde verdadero (como lo es en los nombres de color de X11), sino un verde oscuro o de brillo medio. Un verde RGB verdadero puede especificarse con el color 'lime', como hemos hecho en el ejemplo anterior.
---|---
También se usa como operador matemático para sumar imágenes de degradado separadas. Por ejemplo, al calcular imágenes de diferencia 'manhattan', o en Matemáticas de degradados. '[Plus](#plus)' se usa a veces para añadir texto blanco a una imagen. Este NO es un uso correcto, y puede provocar inconsistencias de antialiasing. La mejor forma es usar el método de composición '[Screen](#screen)'. Este usa una multiplicación en lugar de un método aditivo para aumentar el brillo. El método de composición Linear Dodge es equivalente a '[Plus](#plus)', pero usando la mezcla alfa más habitual '[Over](#over)'.

Plus y la mezcla Plus

Lo que hace más importante a '[Plus](#plus)' es que es casi el único operador matemático que implementa una función de mezcla distinta de la mezcla '[Over](#over)'. No solo 'suma' los colores, sino que también 'suma' los valores del canal alfa, y es casi el único operador que hace esto por defecto. Esto es importante porque permite la unión correcta de imágenes enmascaradas complementarias. Por ejemplo, consulta la fusión de las imágenes Dst In y Out. También te permite usar la transparencia para generar un promedio ponderado o mezcla de dos imágenes. Si no fuera por este método de mezcla especial de '[Plus](#plus)', estas técnicas especiales de manejo de la transparencia normalmente no serían posibles.
A partir de IM v6.6.1-6 se añadió la capacidad de usar el operador matemático sobre los canales alfa a todos los métodos de composición matemáticos simplemente eliminando el indicador 'Sync' por defecto del ajuste "[-channel](https://imagemagick.org/command-line-options/#channel)" (basta con especificar los canales concretos a los que quieres aplicarlo). Consulta Matemáticas de canales de imagen mediante composición de imágenes más abajo. Esto significa que el operador '[Plus](#plus)' es el único método de composición matemático no afectado por esta función, ya que se aplica por defecto.
[IM Output]

Minus, Minus_Dst, Minus_Src ( )

El resultado es la resta de una imagen a la otra. Cuál se resta de cuál depende de si se aplica 'Minus_Src' o 'Minus_Dst'. En concreto, 'Minus_Dst' significa 'restar el destino' o, si se aplica en un comando "magick composite".... La fórmula de.. 'Minus_Dst' es _Src_ - _Dest_ y la de 'Minus_Src' es _Dest_ - _Src_ Debido al orden de las imágenes normalmente definido en la composición de imágenes, y en el comando "magick composite, el método original 'Minus significaba...

**{_Source_} Minus {_background_}**


****

Es decir, el nombre del método original "Minus' es sinónimo de "Minus_Dst", que significa "restar el destino". Es además el operador usado para definir la tabla de degradados mostrada. Por ejemplo, resta un círculo del resultado final de la operación '[Plus](#plus)' anterior. |

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

[IM Output]
Observa la forma en que se maneja el canal alfa, que es la misma que la de todos los demás operadores matemáticos excepto '[Plus](#plus)'. Consulta Composición matemática y mezcla alfa. Este manejo puede modificarse mediante el uso de un indicador de canal 'Sync' especial. Consulta Matemáticas de canales de imagen más abajo para más detalles. El método de composición '[Linear Burn](#linearburn)' también puede usarse para la resta de colores, pero funciona haciendo que el usuario negativice la imagen que se va a restar. Consulta el método de composición Linear Burn para más detalles. | Antes de IM v6.6.8-5 solo se proporcionaba el método '[Minus](#minus)' original (equivalente al más nuevo '[Minus_Dst](#minusdst)').
---|---
[IM Output]

ModulusAdd

El método '[ModulusAdd](#modulus_add)' es muy parecido a '[Plus](#plus)', salvo que cuando el resultado supera el blanco, se envuelve (módulo) de vuelta hacia el negro. Por ejemplo, si sumamos dos degradados en escala de grises, los colores más brillantes se envolverán para formar un segundo degradado. |

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

[IM Output]
Este tipo de composición por módulo puede usarse para producir degradados muy interesantes, como. |

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

[IM Output]
Y varias adiciones por módulo pueden crear degradados repetidos tipo persiana veneciana. |

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

[IM Output]
Lo que produce un degradado repetido 5 veces. Observa cómo uso un fondo de 'gray50' para 'desplazar' de forma efectiva el degradado medio ciclo de módulo hacia delante. [IM Output]

ModulusSubtract

El operador '[ModulusSubtract](#modulus_subtract)' es igual que '[Minus](#minus)', salvo que es una resta por módulo. Restar 'blanco' de 'gris' dará como resultado el 'gris' original, y no negro, ya que los valores se envuelven. Un efecto secundario de la resta por módulo es que algunas partes pueden volverse blancas en lugar de negras, de formas aparentemente incontroladas. |

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

[IM Output]
Hacer un '[ModulusAdd](#modulus_add)' con una imagen negativizada producirá el mismo resultado. [IM Output]

Difference (comparar imágenes y negativizar selectivamente)

La imagen resultante es la diferencia absoluta de los valores de color. Su fórmula es: abs(_Src_ - _Dest_) La diferencia entre 'black' y 'white' producirá un resultado máximo de blanco, mientras que cualquier color igual producirá negro. Básicamente, una forma sencilla de comparación de imágenes. El uso más habitual de este método de composición es comparar dos imágenes del mismo tamaño para ver en qué difieren, e incluso producir un porcentaje de esa diferencia. Este operador se usa normalmente para generar imágenes de diferencia de comparación. El operador también puede usarse para negativizar selectivamente una imagen. Superponer negro no tiene efecto sobre el fondo, mientras que superponer blanco negativiza los colores de la imagen en esa ubicación. En otras palabras, este operador (al igual que el siguiente) proporciona un operador de negativización mapeado por imagen. Por ejemplo, negativicemos la mitad de la imagen 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 (diferencia de imagen excluyendo los grises)

Su fórmula es: _Src_ + _Dest_ - 2*_Src_ *_Dest_ Es una especie de diferencia promediada. Blanco sobre blanco producirá negro (sin diferencia), lo mismo que negro sobre negro. Sin embargo, gris sobre gris producirá un resultado gris. Blanco y negro, naturalmente, siguen produciendo blanco (diferencia máxima). Otra forma de verlo es que las regiones brillantes de la imagen causan una inversión en la otra capa respectiva. Las regiones muy oscuras no cambian nada en absoluto. De este modo, el método Exclusion es igual que '[Difference](#difference)' (consulta el anterior). Un uso de este operador es multiplicar 'degradados sesgados' como los usados para los mapas de desplazamiento. Estos son degradados donde un valor de gris al 50% se considera 'cero', con los colores más oscuros representando un valor 'negativo' y los más claros un valor 'positivo', y los valores van de -1 a +1. Consulta Multiplicar degradados sesgados para más detalles. Otro uso de este método de composición, propuesto por Joe Fry, es una forma de fusionar varias imágenes de diferencia. La imagen final muestra los cambios de todas las imágenes, no solo entre dos imágenes. Es decir, dadas las imágenes A, B y C, primero genera las imágenes de diferencia de A, B y B, C, y luego usa exclusion sobre esos resultados para obtener una sola imagen que muestre cómo cambiaron las tres imágenes. Este método también está estrechamente relacionado con cómo el operador de mezcla de composición Xor maneja los valores de transparencia alfa. [IM Output] [IM Output]

Lighten y Darken (seleccionar el valor máximo/mínimo)

Compara los valores de color de las imágenes de origen y destino y toma el valor más claro o más oscuro respectivamente. La fórmula de Lighten es: If _Src_ > _Dest_ then _Src_
else _Dest_
Para el más oscuro, basta con invertir la comparación.

Un uso de '[Lighten](#lighten)' es componer una versión desenfocada de la imagen original para que las 'luces altas' de la imagen original adquieran un suave resplandor a su alrededor.

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

[IM Output] [IM Output]

Consulta Desenfoque suave para ver una forma mejor (usando una 'técnica de desenfoque mezclado') de lograr un resultado similar.
Estos operadores funcionan comparando y seleccionando los valores individuales de los canales RGB, y por ello esto podría provocar cierta distorsión de color, especialmente al tratar con colores primarios de la imagen. Por ejemplo, aquí he creado una imagen con un degradado rojo y azul, y luego uso lighten para componerlos juntos.

  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]

Como el canal azul es cero en la imagen de degradado rojo, y viceversa, y la composición '[Lighten](#lighten)' funciona por valores de color, el resultado es simplemente una fusión de las imágenes roja y azul para producir una imagen de degradado rojo-azul. Es decir, lo anterior equivalió a una simple composición de copia de canal. Un método para evitar las distorsiones de color es restringir el operador a ajustar solo el canal de 'luminosidad' (Lightness) de la imagen usando el espacio de color HSL. Aunque eso no siempre produce buenos resultados. | _Ten en cuenta que "Gimp", "Photoshop", "PhotoLine" y "Paint Shop Pro" comparan los canales directamente, igual que IM.

"Photo-Paint" compara las imágenes por intensidad de color y usa eso para decidir de qué imagen seleccionar los colores, preservando así la integridad del color. Consulta el método Lighten-Intensity más abajo.

Por otro lado, "Picture Publisher" y "PhotoImpact" usan la luminosidad del color (definida por el espacio de color HSL) para la comparación.

Para comparaciones de la diferencia en escala de grises desde varios espacios de color, consulta el ejemplo Escala de grises mediante Colorspace.

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

Lighten-Intensity y Darken-Intensity (seleccionar color por intensidad)

A partir de IM v6.6.9-5, se añadió una variante 'Lighten_Intensity' y 'Darken_Intensity'. Esta comparará la intensidad de los píxeles de las dos imágenes y luego seleccionará los valores de píxel según ese resultado. Eso significa que no se añadirán colores nuevos a las imágenes, aunque la nueva imagen será una mezcla de los colores de ambas. Además, el orden de las imágenes no importa, salvo que el tamaño y los metadatos provienen de la imagen de destino. Por ejemplo, aquí se toma el más claro de unas imágenes que contienen un degradado rojo y azul.

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

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

Como ves, se seleccionó el píxel completo de la imagen elegida. No obtendrás ninguna mezcla de los canales de color. Sin embargo, como la intensidad del azul se considera más oscura que la del rojo, solo se reemplazan los rojos más oscuros por la imagen de degradado azul más oscura. Este método de composición no está definido por la guía de composición SVG (2009) usada por todos los métodos de composición anteriores que hemos visto hasta ahora. Por ello, no hay una definición real de cómo debería afectar el canal alfa a la comparación de píxeles.

Respecto al alfa, el método tiene dos modos de funcionamiento. Con el indicador especial 'Sync' del ajuste "[-channel](https://imagemagick.org/command-line-options/#channel)" activado (el valor por defecto), la comparación se basará en la intensidad de los colores, ponderada por el canal alfa (transparencia). Eso significa que un 'blanco semitransparente' tendrá una intensidad ponderada aproximadamente igual a la de un 'gris medio opaco'.

Esto significa que, en igualdad de condiciones, '[Lighten_Intensity](#lighten_intensity)' creará una 'unión' de imágenes con forma, mientras que '[Darken_Intensity](#darken_intensity)' creará una 'intersección' de imágenes con forma (al menos no negras). Esto NO es ideal, y puede cambiar, pero es mejor que no tener ninguna entrada de alfa.

El segundo modo de funcionamiento se usará si desactivas el indicador de canal 'Sync' (consulta Usar el indicador 'Sync' más abajo). Por ejemplo, usando "-channel All". La selección de píxeles se basará entonces puramente en la intensidad del color, sin ningún efecto de ponderación por alfa. No obstante, el valor del canal alfa se copiará junto con los datos del píxel que se seleccionó realmente. Para imágenes sin transparencia, el resultado será el mismo independientemente del modo. Este segundo modo también te permite usar un "[-channel](https://imagemagick.org/command-line-options/#channel)" más restringido que defina qué canales pueden copiarse del origen al destino, si se seleccionan. Sin embargo, la selección seguirá basándose puramente en la intensidad de color no ponderada. Esto significa que puedes crear más fácilmente una 'máscara de forma' de la selección, basada en la intensidad de los colores de las dos imágenes. Comparas las imágenes según la intensidad de color, pero solo te interesa el valor del canal alfa en el resultado. Para hacer una 'máscara', harías una imagen totalmente transparente (pero conservando el color), usando Alpha Transparent, y la otra imagen totalmente opaca (el valor por defecto). Al final puedes usar Alpha Extract para obtener la máscara de qué imagen tenía el color más claro en esa posición de píxel. |

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

[IM Output]
Ten en cuenta que los valores alfa de las dos imágenes no tienen que ser solo 'activado' y 'desactivado', sino que pueden fijarse a algún valor de 'referencia'. Eso significa que podrías tener toda una secuencia de imágenes, cada una con un valor de canal alfa distinto. Luego puedes usar este método de composición para comparar todas las imágenes juntas y obtener un mapa de qué imagen contenía el píxel más claro (o más oscuro) en cada ubicación dentro de la imagen. En otras palabras, los métodos de composición por intensidad pueden usarse como una especie de operador de 'selección', o 'comparación', para una larga lista de imágenes. | Añadido a partir de IM v6.6.9-5. Pero no se ha encontrado ninguna definición formal del método. Por ello, la implementación actual se clasifica como altamente experimental, y puede cambiar según las sugerencias de los usuarios. Sin embargo, la idea esencial es sólida.
---|---

Alternativa de intensidad para versiones antiguas de IM

Si el método '[Lighten_Intensity](#lighten_intensity)' no está disponible en tu versión de ImageMagick, puedes recrear una versión pura, solo de color, usando '[Lighten](#lighten)' sobre copias en escala de grises de las dos imágenes y, comparando el resultado con la copia en escala de grises, crear una máscara de selección que aplicar sobre la original. Esto no es fácil, y lo siguiente es una de esas soluciones... |

  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]
Es un trozo de procesamiento bastante horrible, pero, como ves, funciona. Para obtener una versión '[Darken_Intensity](#darken_intensity)', reemplaza el "-delete 1" por "-delete 0", O reemplaza "-compose Lighten" por "-compose Darken". Cualquiera de las dos funcionará.

Operaciones equivalentes de teoría de conjuntos

Varios de los métodos matemáticos anteriores se usan también para realizar operaciones de teoría de conjuntos o booleanas con formas. El método de composición '[Lighten](#lighten)' puede usarse para hallar la 'unión' (el 'O' booleano) de dos (o más) grupos (conjuntos) de píxeles.

  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]

El método de composición '[Darken](#darken)' produce una 'intersección' (el 'Y' booleano) de los píxeles.

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

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

El método de composición '[Difference](#difference)' produce un 'O exclusivo' (el 'XOR' booleano) de los dos conjuntos.

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

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

También podría haberse usado un método '[Exclusion](#exclusion)' para este fin, aunque maneja los valores en escala de grises (no booleanos) de forma distinta. Es, no obstante, el método usado para la mezcla alfa de Duff-Porter '[XOR](#xor)'. Y, por último, '[Minus](#minus)' puede usarse para generar el 'complemento relativo' de dos conjuntos de píxeles.

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

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

Ten en cuenta que puede ser necesario un "[-clamp](https://imagemagick.org/command-line-options/#clamp)" para las versiones HDRI de ImageMagick al aplicar cualquiera de los métodos de composición de 'conjuntos' o 'booleanos' anteriores, para evitar la generación de valores fuera de rango.

Composición matemática y mezcla alfa

Puedes usar los métodos de composición matemáticos anteriores para realizar operaciones matemáticas sobre la imagen. Sin embargo, hay una salvedad importante. Probablemente no funcionen como querrías con imágenes que contienen transparencia. Por defecto, casi todas las composiciones matemáticas anteriores siguen una convención definida por la especificación SVG. Guía de composición SVG (2009). Lo que esto significa es que si intentas usar composiciones matemáticas sobre imágenes con un canal alfa (es decir, alguna forma de transparencia), puede que no obtengas una composición matemática verdadera, sino una forma 'mezclada' de composición. Por ejemplo, aquí creo imágenes de degradado con algo de transparencia alrededor. Luego las '[Multiply](#)' juntas.

  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]
Origen | | [IM Output]
Destino | | [IM Output]
Resultado
---|---|---|---|---

Observa que las partes de las imágenes que no se solaparon se incluyeron sin más en la imagen resultante, tal cual, sin modificación. Es decir, las imágenes se 'mezclaron'. Peor aún, si la imagen contiene transparencias parciales, los valores de color quedarán 'ponderados' por el canal alfa. Esto es útil para una composición Plus, proporcionando una 'suma de color ponderada' u operación de mezcla, pero todavía no he encontrado ninguna utilidad para una 'multiplicación ponderada de colores' en imágenes. ¿Alguien? Si estás haciendo matemáticas de imagen, este comportamiento normalmente no es deseable. Aunque al hacer ese tipo de matemáticas, por lo general tampoco tienes ningún canal alfa, por lo que los problemas de la 'mezcla alfa' y el 'color ponderado' rara vez surgen. | _La composición Plus es el único método de composición matemático que no hace 'mezcla alfa over'. En su lugar, según la especificación SVG, suma cada canal por separado. No obstante, los canales de color siguen ponderándose por el valor alfa antes de sumarse; solo difiere el manejo de los valores alfa (la mezcla).

Esto es importante para proporcionar una 'suma' correcta de formas enmascaradas, como se demuestra en la composición DstOut._
---|---

Matemáticas de canales de imagen mediante composición de imágenes

Si las imágenes sobre las que usas un método de composición matemático son simplemente imágenes en escala de grises totalmente opacas, puedes usar los métodos anteriores sobre ellas directamente, sin problemas. Sin embargo, por defecto los métodos de composición se aplicarán a todos los canales de color, con mezcla alfa, tal como viste arriba. Esto dificulta aplicarlos solo a un canal concreto, como el canal alfa. Por ejemplo, aquí '[Multiply](#multiply)' dos imágenes negras que contienen un degradado transparente. Usando el ajuste "[-channel](https://imagemagick.org/command-line-options/#channel)" por defecto.

  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]
Origen | | [IM Output]
Destino | | [IM Output]
Resultado
---|---|---|---|---

Observa que multiplicar 'Black' por 'Black' es 'Black', por lo que el color no cambia en este ejemplo. Solo se modifica la transparencia resultante. Sin embargo, el resultado no es en absoluto una multiplicación de los valores del canal alfa de las imágenes, ya que, según la definición de SVG, las semitransparencias se mezclan con el método 'over'. Esto es matemáticamente equivalente a una composición '[Screen](#screen)' del canal alfa, y no a una multiplicación.

El indicador de canal Sync y la composición matemática

A partir de IM v6.6.1-6, los métodos de composición matemáticos se modificaron para obedecer el indicador 'Sync' del ajuste "[-channel](https://imagemagick.org/command-line-options/#channel)". Este indicador significa, en la práctica, "sincronizar las operaciones de los canales de color y alfa". El ajuste "[-channel](https://imagemagick.org/command-line-options/#channel)" por defecto es 'RGBK,Sync'. Así que por defecto los canales de color y alfa se manejan de forma adecuada, 'en sincronía', según la especificación SVN. Sin embargo, al eliminar el indicador 'Sync', los métodos de composición matemáticos se convertirán en 'operadores de canal' que aplican la función matemática a cada canal por separado. |

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

[IM Output]
Y esto es una multiplicación correcta del canal alfa.
Todo esto solo se aplica a los métodos de composición matemáticos (como se detalla arriba), así como al método de composición especial '[Mathematics](#mathematics)' (consulta más abajo). No se aplica a otros métodos de composición, como los métodos de composición de iluminación (consulta a continuación). Al menos no todavía. El indicador 'Sync' también afecta a cómo el método de composición Lighten/Darken por intensidad (no un método de composición definido por SVG) trata el canal alfa (arriba). Para más información sobre el uso de las matemáticas de imagen, consulta Matemáticas sobre degradados. Más concretamente, esos ejemplos analizan el uso de composiciones matemáticas para generar imágenes de degradado sesgadas, lo cual es algo más complejo.


Métodos de composición de iluminación -- Light, Dodge, Burn

Estos métodos modifican los colores de una imagen de formas muy complejas y se usan normalmente para ajustar el sombreado o la intensidad de la imagen, haciendo algunas áreas más brillantes y otras más oscuras.

Los métodos de composición de iluminación se dividen en tres subcategorías de operadores relacionados.
'Burn' (quemado), que generalmente oscurece las imágenes.
'Dodge' (aclarado), que generalmente aclara las imágenes.
'Light' (luz), que oscurece y aclara las imágenes según la oscuridad y el brillo de una de las imágenes.

'[Multiply](#multiply)' (oscurece los colores) se considera generalmente una operación de composición de 'quemado' (Burn) puro, mientras que '[Screen](#screen)' (aclara) es un operador de composición de 'aclarado' (Dodge). Por lo general, una de las imágenes consistirá en un patrón de color o una foto, mientras que la otra es una imagen en escala de grises que se usa para aclarar u oscurecer la imagen según corresponda. Cuál imagen debería ser la de color y cuál la de escala de grises es discutible y depende de cómo se implementó el método. No hay ningún estándar al respecto, por lo que se recomienda precaución y experimentación. Como consecuencia de la falta de estándares para estos operadores, muchos usuarios no entienden o usan mal estos operadores. Tampoco he encontrado todavía ninguna guía sobre el uso correcto de estos métodos de composición, que es prácticamente inexistente, por lo que tuve que hacerlo lo mejor que pude con los ejemplos de abajo. [IM Output]

Overlay (añadir color a un objeto en escala de grises)

Este método de composición es muy inusual, ya que se ha diseñado para '[Multiply](#multiply)' (oscurecer) y '[Screen](#screen)' (aclarar) una imagen al mismo tiempo. Qué método se aplica a un píxel concreto lo selecciona el valor de la imagen de destino, que puede considerarse la 'máscara de iluminación'. Por ello, el destino suele ser una imagen en escala de grises a la que se le añade color. Su fórmula es: If _Dest_ <= 0.5 then 2*_Src_ *_Dest_
else 1-2*(1-_Src_)*(1-_Dest_)
El resultado es un método de composición especial que preserva el blanco y el negro puros (luces altas) presentes en la imagen de destino, mientras tiñe los grises de tono medio de esa imagen con los colores de la imagen superpuesta. Es decir, dada una imagen en escala de grises como destino, este operador coloreará ese fondo usando la imagen de origen, preservando los efectos de sombra y realce presentes en el destino.
  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]
Destino | | [IM Output]
Superposición | | [IM Output]
Resultado
---|---|---|---|---

Como ves, los grises de tono medio de la imagen de degradado se colorearon con los colores de la imagen proporcionada. Y este es el uso normal del método de composición: añadir color a una máscara de iluminación en escala de grises. Este método, a diferencia de '[Multiply](#multiply)' o '[Screen](#screen)', no es asociativo.

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

[IM Output]
Destino | | [IM Output]
Superposición | | [IM Output]
Resultado
---|---|---|---|---

Este 'sobreponer color' en una imagen de realces grises hace que este método sea perfecto para añadir color a la salida del operador "[-shade](https://imagemagick.org/command-line-options/#shade)". No obstante, debes tener mucho cuidado de generar un gris de tono medio perfecto a partir de ese operador, para obtener un coloreado correcto en las áreas sin ningún realce. Consulta Realces de Shade Overlay para más detalles. Por ejemplo, dado un círculo, podemos sombrearlo para producir efectos tridimensionales y luego teñir el resultado con la imagen original para restaurar los colores originales.

  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]
Destino | | [IM Output]
Superposición | | [IM Output]
Resultado
---|---|---|---|---

Para un ejemplo más práctico del uso del método '[Overlay](#overlay)', consulta la imagen "levels_3d" en la página Ejemplos del generador de fondos. El mayor problema con este método de composición es que no se conservará ninguna transparencia de ninguna de las imágenes. Es decir, lo que sea visible en cualquiera de las imágenes será visible en el resultado. Normalmente, este operador se usa sobre imágenes que no contienen transparencia; suele significar que tal vez necesites hacer algunos pasos extra para restaurar la transparencia de la imagen de destino o fondo. Una forma sencilla de preservar la transparencia es simplemente desactivar el canal alfa de la imagen de destino, haciéndolo así inaccesible. Cuando la composición termine, puedes activarlo de nuevo. Se da un ejemplo de esto en Imágenes de formas sombreadas. Otro método es guardar una 'máscara', o una copia de la imagen original, y luego usar esa máscara o imagen para restaurar la transparencia. Se proporcionan ejemplos de cómo hacerlo en Tinte de color con Overlay. O en el ejemplo más complejo Mejor generación de logotipos 3D. Hasta la versión 6.1.6 de IM, el método de composición 'Overlay' estaba defectuoso, ya que solo producía resultados de blanco o negro puros (lo más probable es que solo obtuvieras un resultado negro puro). En consecuencia, la mayoría de los usuarios de IM tenían pocas posibilidades de entender este operador. Ahora que se ha corregido, los usuarios podrán hacer buen uso de este método.
[IM Output]

Hard_Light (añadir textura o realce/sombra a una imagen)

Esto es igual que '[Overlay](#overlay)', salvo que las imágenes de origen y destino se intercambian. Si comparas las imágenes de degradado de estos dos operadores, verás que el degradado está transpuesto en diagonal, lo que muestra el intercambio de las entradas de origen y destino. Su fórmula es: If _Src_ <= 0.5 then 2*_Src_ *_Dest_
else 1-2*(1-_Src_)*(1-_Dest_)
Así, mientras que '[Overlay](#overlay)' puede añadir color a un objeto sombreado en escala de grises, '[Hard_Light](#hardlight)' añade efectos de iluminación en escala de grises a una imagen. Qué método uses depende de cómo estés pensando en términos de añadir efectos de iluminación a la imagen. La diferencia importante es cuál imagen es la de 'destino', para preservar los metadatos de la imagen, o incluso desactivar temporalmente el canal alfa para preservarlo durante la operación. Por ejemplo, aquí genero un 'efecto de iluminación' usando una operación "[-raise](https://imagemagick.org/command-line-options/#raise)" desenfocada de una imagen de gris puro del mismo tamaño que la original. Esto se compone luego con '[Hard_Light](#hardlight)' para añadir esos efectos de iluminación a la imagen.
  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]
Destino | | [IM Output]
Superposición | | [IM Output]
Resultado
---|---|---|---|---

Este método facilita añadir tanto realces (como una luz reflejada) como efectos de sombra oscura a una imagen existente, todo con una sola operación. Aquí tienes un ejemplo de añadir directamente 'textura' de iluminación a una imagen. |

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

[IM Output]
Observa lo fuerte que es el texto resultante, casi inundando la imagen original con áreas claras y oscuras. Esta es la desventaja de usar '[Hard_Light](#hardlight)'. Para combatirlo, tal vez quieras atenuar el contraste de una textura superpuesta. |

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

[IM Output]
Otros métodos de composición de iluminación, como '[Soft_Light](#softlight)', también pueden producir mejores resultados de forma más directa. Para ver un mejor ejemplo, consulta Superponer una textura en el Recetario de fotos. Se proporciona un ejemplo real del uso del sombreado '[Hard_Light](#hardlight)' en un foro de discusión de IM sobre la generación de carátulas de DVD 3D a partir de imágenes de origen planas. Recuerda que tanto el sombreado '[Overlay](#overlay)' como '[Hard_Light](#hardlight)' son esencialmente el mismo método de composición. La única diferencia es el orden de las imágenes. [IM Output]

Soft_Light (realce más suave de una imagen)

El método de composición 'Soft_Light' también añadirá realces y sombras a una imagen de color existente. Sin embargo, los colores de la imagen de destino se modifican para producir un contraste más suave y un degradado más uniforme en los efectos de iluminación. Si te fijas con atención en la 'imagen de mapa en escala de grises' (a la derecha), no verás ninguna discontinuidad abrupta, aunque en realidad hay dos. (Consulta también '[Pegtop_Light](#pegtoplight)' a continuación). Está más estrechamente relacionado con la composición '[Overlay](#overlay)' que con '[Hard_Light](#hardlight)', por lo que el destino suele ser la máscara de iluminación en escala de grises. Si esto es intencionado o no se desconoce, pero hace que sea distinto de '[Hard_Light](#hardlight)' y significa que es mejor componer la imagen principal sobre la imagen de sombreado en lugar de al revés. :-( | _ADVERTENCIA: Este efecto de iluminación se define más como '[Overlay](#overlay)' que como '[Hardlight](#hardlight)'. Sin embargo, no está claro cuál debería contener la imagen de iluminación en escala de grises. Usar el origen puede producir resultados de blanco y negro completos; usar el destino, en cambio, no puede producir esos extremos.

Si alguien tiene alguna referencia definitiva, hágamelo saber._
---|---
Por ejemplo, aquí está el mapeo de textura 'Soft_Light'. |

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

[IM Output]
Como ves, incluso con una imagen "granite:" normalizada, los cambios de color son más suaves y menos intensos que los de '[Hard_Light](#hardlight)', o incluso '[Overlay](#overlay)'. Sin embargo, tampoco obtendrás nunca ninguna sombra de negro puro ni realce de blanco puro añadidos a la imagen resultante. Básicamente, '[Soft_Light](#softlight)' tiene un efecto de textura más suave, que preserva el coloreado original de la imagen de origen. Aquí muestro los cambios de color logrados al usar superposiciones de color de negro puro, blanco y un gris perfecto. |

  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 hubieras hecho esto con '[Hard_Light](#hardlight)', los lados de la imagen serían de blanco y negro puros, en lugar de solo un oscurecimiento o aclarado del 50%. | _Antes de IM v6.5.4-3, '[Soft_Light](#softlight)' no funcionaba como se esperaba, produciendo un aclarado para cualquier superposición de imagen de tono no gris. De hecho, confirmé que estaba implementado correctamente según la especificación SVG oficial de 2004.

Por desgracia, era la especificación, no la implementación, lo que era incorrecto. Se corrigió en la especificación SVG de marzo de 2009. Por ello, para IM v6.5.4-3 y posteriores, este operador ahora funciona como esperarías que funcionara un operador de sombreado de luz._
---|---
[IM Output]

Pegtop_Light (una variación más suave de soft light)

Aunque '[Soft_Light](#softlight)' es mucho más suave que '[Hard_Light](#softlight)' u '[Overlay](#overlay)', en realidad sigue basándose en dos funciones separadas unidas. El método 'Pegtop_Light' produce un resultado casi idéntico al de '[Soft_Light](#softlight)', pero usa una única función suave sin ninguna discontinuidad, ni siquiera las dos menores que usa '[Soft_Light](#softlight)'. Por ello, en realidad es mucho más simple y rápido. Su fórmula es: 2*_Src_ *_Dest_ + _Src_ 2*(1 - 2*_Dest_) Para más detalles, consulta la página Alternativa Pegtop SoftLight. ADVERTENCIA: Este efecto de iluminación se define más como '[Overlay](#overlay)' que como '[Hard Light](#hardlight)'.
El método de composición '[Pegtop_Light](#pegtoplight)' se añadió a la versión 6.5.4-3 de IM.
--- ---
[IM Output]

Linear_Light (un esquema de sombreado muy simple pero fuerte)

Otro método de sombreado de imagen que es muy sensible a la imagen de sombreado superpuesta. Tiene zonas mucho más grandes de límites de blanco y negro puros. Su fórmula es: 2*_Src_ + _Dest_ - 1 Aunque es una función continua, podría considerarse en realidad una combinación de '[LinearDodge](#lineardodge)' (equivalente a una composición '[Plus](#plus)') y '[LinearBurn](#linearburn)' (que es un 'plus' con desplazamiento que a veces se usa para restar imágenes). Antes de IM v6.5.4-3 se demostró que '[Linear_Light](#linearlight)' estaba implementado incorrectamente.
[IM Output]

Vivid_Light (una variante de Linear Light)

El método 'Vivid_Light' es el mismo que el implementado en Photoshop 7, y es básicamente un refinamiento menor del método '[Linear_Light](#linearlight)'. Lo que hace es evitar el sombreado de los extremos, para hacer más 'vívidos' los colores primarios fuertes de las imágenes. Su fórmula es: If _Src_ <= 0.5 then 1-(1-_Dest_)/(2*_Src_)
else _Dest_ /(2*(1-_Src_))
Otra forma de verlo es como una mezcla de '[Color_Dodge](#colorburn)' y '[Color_Burn](#colordodge)' para los extremos, pero '[Linear_Light](#linearlight)' para los tonos medios. El método de composición '[Vivid_Light](#vividlight)' se añadió a la versión 6.5.4-3 de IM.
--- ---
[IM Output]

Pin_Light

La función 'Pin_Light' está diseñada para preservar mejor los tonos medios de la imagen de destino, restringiendo su sombreado al sombreado de superposición más claro y más oscuro. Supuestamente, esto simula los cambios de iluminación duros y bruscos que resultan de una diminuta fuente de luz puntual, en lugar de una fuente de luz más difusa y 'suave'. Su fórmula es: If _Dest_ < 2*_Src_ -1 then 2*_Src_ - 1
elif _Dest_ > 2*_Src_ then _Dest_
else 2*_Src_
El método de composición '[Pin_Light](#pinlight)' se añadió a la versión 6.5.4-3 de IM.
--- ---
[IM Output]

Linear_Dodge (la composición 'Add' de Photoshop)

Si comparas la imagen de degradado (a la derecha) de 'Linear Dodge' con la de '[Plus](#plus)', verás que para dos imágenes opacas tienen exactamente el mismo efecto. Su fórmula es, naturalmente: Src + Dest Es decir, para imágenes sin transparencia, estos dos comandos con las imágenes 'A' y 'B producen la misma imagen resultante 'R'...

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

El método es equivalente al modo de composición de Photoshop del mismo nombre. La única diferencia real entre los dos métodos está en cómo manejan las imágenes que contienen colores semitransparentes. Esencialmente, la composición Linear_Dodge usa la mezcla alfa 'Over', mientras que la composición Plus usa la mezcla alfa 'Plus'. Para más detalles, consulta Mezcla Plus. El método de composición '[Linear_Dodge](#lineardodge)' se añadió a la versión 6.5.4-3 de IM.
[IM Output]

Linear_Burn (un método 'Subtract' de Photoshop)

El método de composición 'Linear Burn' es una composición 'Add Minus One' (sumar menos uno), que produce el mismo resultado que si negativizaras todas las imágenes de entrada y salida de un método de composición '[Linear Dodge](#lineardodger)' o '[Plus](#plus)'. Su fórmula es: _Src_ + _Dest_ - 1 En Photoshop esto se conoce no solo como 'Linear Burn', sino también como 'Subtract'. Es decir, porque si negativizas una de las imágenes de entrada (como la imagen de origen), esa imagen se resta de la otra imagen. Por ejemplo, aquí están las matemáticas resultantes cuando negativizas la imagen de origen...

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

Es decir, sin transparencia, puedes tomar la imagen 'A' y restar la imagen 'B para producir la misma imagen resultante '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

Básicamente, la imagen que se negativice es la imagen que '[Linear Burn](#linearburn)' restará de la otra. No importa si la imagen es la de origen o la de destino. En cierto modo, esto hace que este método de composición sea más versátil. Por ejemplo, aquí resto una imagen de un círculo a la derecha (que negativizo) de la de la izquierda.

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

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

Este método de composición también lo hace útil como alternativa al método Subtract Evaluate Sequence para restar varias imágenes de una sola imagen de partida. Ten en cuenta, no obstante, que '[Linear Burn](#linearburn)' no puede aplicarse directamente al canal alfa de las imágenes, mientras que el más matemático método de composición Minus sí puede. El método de composición '[Linear_Burn](#lineardodge)' se añadió a la versión 6.5.4-3 de IM.
[IM Output]

Color_Dodge (la división de Photoshop)

Este método de composición usa la imagen superpuesta de origen como una máscara que protege en cierto modo la imagen de fondo de la "exposición a la luz" durante largos periodos de tiempo. Las partes expuestas a una máscara más clara se aclaran (o sobreexponen), mientras que las áreas negras no producen ningún cambio. Podrías imaginarlo como colocar un objeto sobre una foto durante mucho tiempo, haciendo que las partes expuestas a la luz se blanqueen lentamente con la edad, mientras que las partes que estaban cubiertas permanecen como estaban. Una superposición de negro puro no cambia la imagen, mientras que una superposición de blanco puro hará blancos todos los colores del fondo, excepto los que eran de negro puro. Sin embargo, a diferencia de los métodos de composición dodge '[Screen](#screen)' (multiplicación invertida) o '[Linear_Dodge](#lineardodge)' (suma), una imagen de destino de negro puro o totalmente blanca permanecerá inalterada por la máscara de iluminación. En otras palabras, solo se ven afectadas las áreas que contienen grises y color no puro. Su fórmula es: _Dest_ / (1-_Src_) se necesita aquí un ejemplo y un uso práctico De hecho, '[ColorDodge](#colordodge)' y los dos operadores '[Divide](#divide)' pueden producir los mismos resultados. '[ColorDodge](#colordodge)', no obstante, requiere que la imagen usada como 'divisor' se negativice y se use como imagen de 'origen' para el operador. Por ejemplo, todos estos comandos que operan sobre las imágenes 'N' (numerador) dividido por 'D' (denominador) producen la misma imagen resultante 'R'... Suponiendo que todas las imágenes son del mismo tamaño.

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

Consulta '[Divide](#divide)' para ver un ejemplo de cómo dividir imágenes puede usarse para eliminar un degradado de fondo. [IM Output]

Color_Burn

Este es el inverso de '[Color_Dodge](#colordodge)', equivalente a invertir todas las imágenes de entrada y salida. El resultado es que la imagen de fondo se oscurece con una imagen de máscara oscura, mientras que el blanco no produce ningún oscurecimiento. Sin embargo, a diferencia de los métodos de composición burn '[Multiply](#multiply)' o '[Linear_Burn](#linearburn)', una imagen de destino de negro puro o totalmente blanca permanecerá inalterada por la máscara de iluminación. En otras palabras, solo se ven afectadas las áreas que contienen grises y color no puro. Su fórmula es: 1 - ( (1-_Dest_) / _Src_) se necesita aquí un ejemplo y un uso práctico Este comando es equivalente al conjunto de fórmulas anterior para implementar una división de imágenes. Observa la negativización final en el comando.

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

Un uso de '[Color_Burn](#colorburn)' es limpiar fondos de degradado oscuro a negro puro. Igual que '[Color_Dodge](#colorburn)' puede dividir fondos a blanco. Antes de IM v6.5.4-3 se demostró que '[Color_Burn](#colorburn)' estaba implementado incorrectamente.

Métodos de copia de canales

Estos métodos de composición de imágenes están diseñados para transferir la información de un canal de imagen de una imagen a otra. No obstante, hacen algunas suposiciones sobre la imagen de la que se está copiando el 'canal'. Te sugiero que leas las secciones Espacio de color de la imagen y Operadores de canal de color para entender cómo representa IM los canales de color de la imagen en memoria antes de usarlos. El método de composición de copia de canales más útil es 'Copy_Opacity' (consulta más abajo). Es la forma más sencilla de reemplazar por completo (o añadir) solo el canal alfa a una imagen existente usando una imagen de máscara en escala de grises separada.

Copy_Opacity (establecer la transparencia a partir de una máscara en escala de grises)

El propósito original del operador '[Copy_Opacity](#copyopacity)' era copiar el canal de transparencia de la imagen de origen en la imagen de destino, para establecer las partes transparentes de esa imagen. Esto se hace más comúnmente con los operadores de Duff-Porter, diseñados específicamente para componer imágenes con transparencias alfa. Por ejemplo, si el destino es totalmente opaco, lo cual es típico del uso de este operador, entonces los operadores '[Dst_In](#dstin)', o incluso 'Dst_ATop', lograrán el mismo resultado. Entonces, ¿por qué es tan importante el operador '[Copy_Opacity](#copyopacity)', cuando hay alternativas? La respuesta es cómo maneja este operador un caso especial. Cuando la imagen superpuesta (origen) no tiene canal alfa, este operador la tratará como una simple máscara de imagen en escala de grises. Es decir, reemplazará cualquier canal alfa existente de la imagen con la imagen en escala de grises dada. En resumen, lo que sea negro en la imagen en escala de grises se considerará totalmente transparente, y lo blanco totalmente opaco. Esto es tan importante, y se usa tan a menudo, que lo convertiré en una regla general...

Las imágenes que usen este operador NO deben contener ningún canal alfa.

Puedes asegurarte de que las imágenes no tengan ningún canal alfa desactivándolo en ambas imágenes de entrada antes de componer con el ajuste de composición '[Copy_Opacity](#copyopacity)'. Por ejemplo, crea una imagen de luna en escala de grises (que es fácil de dibujar) y luego úsala como máscara para un degradado de plasma azul, para producir una bonita luna azul de aspecto moteado. |

  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 tus imágenes tienen componentes transparentes que necesitas conservar, este no es el operador de composición alfa que necesitas. Lo más probable es que quieras usar '[Dst_In](#dstin)' en su lugar, para restar las áreas transparentes de la superposición de origen de tu destino (en cuyo caso ambas imágenes necesitan tener un canal alfa activado y en uso). Este operador se explica con aún más detalle en Usar una imagen de máscara con fuentes y en Editar máscaras de imagen. También se usa en muchos otros ejemplos a lo largo de estas páginas.

Copy_Red, Copy_Green, Copy_Blue

Copia el canal de color dado de la imagen de origen en la imagen de destino. Como una imagen RGB en escala de grises tiene los mismos datos en los tres canales de color, estos métodos pueden considerarse como copiar una imagen de canal en escala de grises para reemplazar el canal especificado en la imagen de destino. Igual que 'Copy_Opacity' (consulta arriba) puede reemplazar el 'canal alfa' de una imagen con una imagen en escala de grises. Estos métodos de copia de canales se usan rara vez hoy en día, gracias al uso de varios operadores de canal de color para separar y recombinar canales de color mediante imágenes de canal en escala de grises. Ten en cuenta que al fusionar varios patrones de degradado en escala de grises pueden generarse imágenes de color muy interesantes usando estos operadores. Para ver algunos ejemplos, mira las combinaciones de degradados de color en las tablas en bruto de operadores de composición.

Copy_Cyan, Copy_Magenta, Copy_Yellow

Estos son sinónimos de los mismos métodos de la sección anterior. Básicamente, como el canal 'Red' en las imágenes RGB se usa también como canal 'Cyan' en las imágenes CYMK. Lo mismo ocurre con los canales 'Green' y 'Magenta', y con los canales 'Blue' y 'Yellow'. Por ello, copiar el canal 'Cyan' es lo mismo que copiar un canal 'Red'. Qué tipo de canal representan los datos de la imagen depende del espacio de color actual de la imagen en memoria.

Copy_Black

Esto también solo copia el canal 'Black' del origen al destino, si existe. No obstante, ese canal solo existe para las imágenes CMYK. Si el canal 'Black' no existe, esto no hace nada, lo cual probablemente sea un fallo. Lo que probablemente debería hacer es copiar una imagen de canal 'Black' en escala de grises al canal black del destino (suponiendo que exista).

Hue (copiar el tono de una imagen RGB al destino)

Este operador copia el tono H de la imagen de origen para reemplazar el tono de la imagen de destino, dejando sin cambios la saturación S y la luminancia L del fondo (¿O es la luminancia Y?). Esto supone que ambas imágenes están en el espacio de color RGB. No lo he probado con una imagen en un espacio de color que no sea RGB.

Saturate (copiar la saturación de una imagen RGB al destino)

Copia la saturación S del origen al destino (suponiendo que la imagen está en el espacio de color RGB), dejando sin cambios el tono de color H y la luminancia L (¿O es la luminancia Y?). Esto supone que ambas imágenes están en el espacio de color RGB. No lo he probado con una imagen en un espacio de color que no sea RGB.

Luminize (copiar la luminancia de una imagen RGB al destino)

Copia la luminancia L (¿O es la luminancia Y?) del origen al destino, dejando sin cambios el tono de color H y la saturación S. Esto supone que ambas imágenes se almacenan usando el espacio de color RGB. No lo he probado con una imagen en un espacio de color que no sea RGB.

Colorize (copiar el tono y la saturación de color al destino)

Copia el tono H y la saturación S del origen al destino, dejando sin cambios la luminancia de color L (¿O es la luminancia Y?). Esto supone que ambas imágenes se almacenan usando el espacio de color RGB. No lo he probado con una imagen en un espacio de color que no sea RGB.


Disolver una imagen sobre otra

Lo que hace el operador "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" es proporcionar un método de composición '[Over](#over)' controlado. Ajusta la transparencia de la imagen superpuesta, antes de superponerla sobre el fondo, según los porcentajes dados.

**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
**

Proporcionar dos argumentos (nuevo en IM v6) te permite definir exactamente cuánto se disuelven tanto la imagen superpuesta como la de fondo antes de superponerlas. Si solo se da un argumento de porcentaje, solo se disuelve la superposición para dejar esa cantidad (0 por ciento es totalmente transparente, 100 deja el origen sin cambios) antes de superponerla (con el método de composición '[Over](#over)') sobre el fondo. Además, si continúas más allá de un valor del 100% (también nuevo en IM v6), entonces empezará a disolver la imagen de fondo. En otras palabras, en el rango del 0 al 100 por ciento, la imagen de fondo no se disuelve en absoluto (con un dst_percent del 100%), mientras que en el rango del 100 al 200, la superposición se deja tal cual (src_percent fijado al 100%), y el fondo se disuelve, de modo que desaparece por completo cuando el argumento alcanza un valor del 200%). Aquí tienes una tabla de resultados con varios argumentos de dissolve... |

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

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


Como ves, "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" primero disolverá lentamente una nueva imagen sobre el fondo, y luego disolverá lentamente la imagen de fondo original. Lo cual es muy adecuado para imágenes que contienen áreas transparentes. También puedes controlar la disolución del fondo, de modo que mientras una imagen se disuelve por encima, puedas disponer que el fondo se disuelva por debajo. Esto está muy bien, pero no es realmente adecuado para un estilo de disolución entre imágenes propio de un pase de diapositivas. Como una imagen se superpone, las imágenes no se fusionan por igual, e intercambiar los argumentos de imagen (y los argumentos de dissolve correspondientes) producirá resultados distintos. Para que funcione el rango del 100% al 200%, o el segundo argumento de porcentaje, la imagen de fondo debe contener un canal alfa. Esto es especialmente importante para las imágenes JPEG, que por defecto no contienen ninguna transparencia. Por ello, probablemente sea buena idea decirle a IM que dé a todas las imágenes un canal alfa usando el operador "[-alpha](https://imagemagick.org/command-line-options/#alpha) Set" antes de aplicar el método de composición 'dissolve'.
La mayor salvedad al usar dissolve sobre ambas imágenes es que la transparencia afecta al promedio. Es decir, disolver dos imágenes al 50% siempre dará como resultado colores semitransparentes, incluso cuando ambas imágenes de entrada son totalmente opacas. Por ejemplo:
  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]
Puedes ver que tras superponer la imagen sobre un patrón de tablero de ajedrez, todas las partes de la imagen son al menos semitransparentes. Aunque las partes realmente superpuestas son menos transparentes que cualquier parte donde una de las imágenes de origen es transparente. La única vez que obtendrás una imagen totalmente opaca de una composición 'Dissolve' es si una de las imágenes (normalmente el 'fondo') no se disuelve (un valor del 100 por ciento) y permanece opaca. Por eso, el valor por defecto es usar un valor de 100 para el 'fondo', al menos al principio. Los siguientes son casos especiales para argumentos concretos de "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)"... 0x0 | | Ambas imágenes se disuelven hasta la transparencia total.
Equivalente a un método de composición '[Clear](#clear)'.
---|---|---
0 | Solo la imagen de fondo sin cambios (origen hecho transparente).
Equivalente a un método de composición '[Dst](#dst)'.
100 | Una superposición normal de la imagen superpuesta sobre el fondo.
Equivalente a un método de composición '[Over](#clear)'.
200 | La imagen superpuesta sobre un lienzo en blanco (fondo hecho transparente).
Equivalente a un método de composición '[Src](#src)'.
El método de composición "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" se usa comúnmente como forma alternativa de marca de agua con imágenes, en particular con marcas de agua de color.


Mezclar dos imágenes

El método de composición "[-blend](https://imagemagick.org/command-line-options/#blend)" proporciona lo que el método de composición "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" pretendía ofrecer originalmente, antes de que se reorientara a otras operaciones más básicas. Mientras que el método "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" superpone imágenes una sobre otra, "[-blend](https://imagemagick.org/command-line-options/#blend)" fusiona las imágenes de modo que ambas se tratan por igual (simplemente sumándolas), según los argumentos de porcentaje dados. Por ello, puedes lograr el mismo resultado (excepto en el tamaño final de la imagen) intercambiando los porcentajes y los argumentos de imagen. Esto no ocurre con el método "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)". En otras palabras, "[-blend](https://imagemagick.org/command-line-options/#blend)" es asociativo (los argumentos son intercambiables), mientras que "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" no lo es.

**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 solo se da un único valor de porcentaje, se usa como porcentaje de disolución para la superposición, mientras que la imagen de fondo se disuelve en la cantidad exactamente opuesta. Es decir, un "-blend 30" disolverá la superposición un 30%, y el fondo un 70%, antes de sumar las dos imágenes. Por tanto, es equivalente a "-blend 30x70". El resultado de esto es que la opacidad de las dos imágenes (en las áreas superpuestas) seguirá sumando el 100%.

Al dar dos porcentajes, puedes controlar exactamente cuánto se fusionan las dos imágenes. Aquí tienes una tabla de resultados con varios argumentos de dissolve... |

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

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


A partir de los resultados puedes ver que "[-blend](https://imagemagick.org/command-line-options/#blend)" te permite reemplazar lentamente una imagen por otra de forma equitativa sin superposición. Si superpones el resultado de una mezcla sobre un lienzo negro, digamos del tamaño de tu pantalla, puedes crear fácilmente un programa de pase de diapositivas respetable en el que una imagen se disuelve lentamente en otra. También puedes ver que, como las imágenes se suman (internamente usa el operador de composición '[Plus](#plus)'), puedes sobrecargar fácilmente los máximos del canal de color, produciendo algunos artefactos. Un color blanco al 100% en particular asegurará que no se vea nada de la otra imagen, ya que todos los canales de color ya están en su máximo. Se recomienda que en la mayoría de las situaciones solo necesites usar la versión de un solo argumento de blend. Al igual que con "-dissolve", la imagen de fondo debe contener un canal alfa para que "-blend" funcione correctamente, para disolver la imagen de fondo. Por ello, probablemente sea buena idea decirle a IM que establezca un canal alfa en todas las imágenes antes de aplicar la composición '[Blend](#blend)'.
Los siguientes son casos especiales para argumentos concretos de "[-blend](https://imagemagick.org/command-line-options/#blend)"... 0x0
Equivalente a un método de composición '[Clear](#clear)'.
--- ---
0 Solo la imagen de fondo sin cambios.
Equivalente a un método de composición '[Dst](#dst)'.
100 La imagen superpuesta sobre un lienzo en blanco.
Equivalente a un método de composición '[Src](#src)'.
100x100 Solo las dos imágenes sumadas.
Equivalente a un método de composición '[Plus](#plus)'.
50 Promedio de ambas imágenes. Esto equivale al operador de secuencia de imágenes "[-evaluate-sequence mean](https://imagemagick.org/command-line-options/#average)", pero con dos imágenes. (Consulta también Promediar imágenes)

Blend frente a Dissolve

Aunque tanto Dissolve como Blend harán semitransparentes las imágenes, "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" compone la imagen usando '[Over](#over)', mientras que "[-blend](https://imagemagick.org/command-line-options/#blend)" fusiona las imágenes usando '[Plus](#plus)'. Esto puede no parecer mucho, pero puede ser muy importante, ya que define cómo manejan los dos métodos de composición las partes de la imagen que no están superpuestas, o las áreas donde la superposición es transparente. Por ejemplo.

  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
---|---

Observa que, aunque las partes no superpuestas del fondo del 'dragón' son semitransparentes en las imágenes mezcladas, el área de la estrella es totalmente opaca en ambas, ¡y contiene el mismo resultado de color! Es decir, para las áreas donde ambas imágenes son totalmente opacas, y dejas que IM calcule el segundo argumento '{_dst_percent_}' adecuado, también serás totalmente opaco y tendrás el mismo resultado. Por ejemplo, aquí fusiono la imagen del 'dragón' con la imagen 'rose' incorporada. Recorto ambas imágenes al mismo tamaño, de modo que ambas imágenes totalmente opacas puedan cubrirse por completo.

  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 compararas estas dos imágenes, descubrirías que son exactamente iguales. En resumen, una Dissolve (over con solo la imagen superpuesta a la que se da un porcentaje de transparencia) es lo mismo que una Blend (suma ponderada de ambas imágenes, cada una con sus porcentajes adecuados) produce el mismo resultado para cualquier imagen totalmente opaca. Solo cuando una o ambas imágenes contienen transparencia difieren los dos métodos.

Usar Blend para modificar una sola imagen

Blend es básicamente una 'función de interpolación', o 'promedio ponderado', que te permite combinar dos imágenes totalmente opacas de forma lineal controlada. Es decir, 30% del origen más 70% del fondo, para producir una nueva imagen 100% opaca. Sin embargo, puede hacer más que solo combinar dos imágenes. También puede usarse para aclarar, ajustar el contraste, la saturación, colorear e incluso enfocar una imagen concreta. Este uso de blend se trata con más detalle en un documento encontrado por BugBear bugbear@papermule.co.uk en la WWW, Image Processing by Interpolation and Extrapolation, una copia del que hay en Grafica Obscura (que no es directamente enlazable desde una fuente externa). Se recomienda la lectura de este documento para profundizar en el uso de esta función. La capacidad de extrapolación se añadió al operador "[-blend](https://imagemagick.org/command-line-options/#blend)" en IM v6.3.5-10.
Por ejemplo, aquí podemos hacer la imagen rose más clara o más oscura mezclándola con una imagen de negro puro del mismo tamaño.
  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%
---|---|---|---|---

Como en cualquier uso del método de composición Blend, el 0% da como resultado la imagen de 'destino', mientras que al 100% el resultado es la imagen de 'origen' original sin cambios. Son las imágenes mezcladas y extrapoladas las de mayor interés aquí. De forma similar, mezclar con una imagen de gris puro te permite ajustar el contraste de cualquier imagen.

  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%
---|---|---|---|---|---

Aquí mezclo la imagen con una versión en escala de grises de la imagen, lo que te permite controlar la saturación de los colores.

  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%
---|---|---|---|---

Aquí mezclo la imagen rose con su versión desenfocada, produciendo desenfoques suavizados al interpolar, y enfoque al extrapolar, a partir de su forma desenfocada.

  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%
---|---|---|---|---


Opción Watermark - composición 'Modulate'

La opción de composite "[-watermark](https://imagemagick.org/command-line-options/#watermark)", o el método de composición "modulate", está pensada para descolorar imágenes en el espacio HSB con fines de copyright.

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

   magick bgnd  overlay   -compose modulate \


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

     -composite   result
**

La imagen de 'superposición' es una imagen en blanco y negro con máscara alfa, que se usa para aclarar/oscurecer la imagen de destino según el porcentaje de 'brillo' dado. Un 'brillo' de '0' no cambia el brillo de la imagen, mientras que un valor de '100' reemplaza el brillo con la intensidad de la imagen de superposición. Es decir, si la superposición es negra, el destino se hace negro; si es blanca, el color de la imagen de destino quedará totalmente saturado. La 'saturación' toma por defecto '100', produciendo la máxima saturación de color. Si se fija a '0', el área enmascarada se desaturará a blanco y negro. Aquí tienes una tabla de resultados con varios argumentos... |

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

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


Un buen valor para marcar imágenes con una marca de agua ligera es un brillo de aproximadamente 15 a 30 por ciento. Los siguientes son casos especiales para argumentos concretos de "[-watermark](https://imagemagick.org/command-line-options/#watermark)"... 0 No se hace ningún cambio en la imagen de destino.
100 El destino se hace negro donde la superposición es negra, y de tono de color totalmente saturado donde la superposición es blanca
0x0 El área superpuesta enmascarada se desatura a escala de grises
100x0 La superposición en escala de grises simplemente se superpone '[ATop](#atop)' del destino.
Para otras técnicas de marca de agua, consulta Marca de agua con imágenes.

Usar una máscara de composición para limitar el área compuesta

El comando "magick composite" y el operador "[-composite](https://imagemagick.org/command-line-options/#composite)" también admiten una tercera imagen de máscara que limitará el área afectada por el método "[-compose](https://imagemagick.org/command-line-options/#compose)". Por ejemplo, dadas dos imágenes y una imagen de máscara, puedes superponer parte de la imagen de origen sobre la imagen de fondo, según lo definido por esa máscara. Ten en cuenta, no obstante, que la imagen de fondo sigue definiendo el tamaño final de la imagen resultante.

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

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

La imagen de máscara se considera parte de la imagen de destino, definiendo qué partes del destino pueden modificarse por el resultado de la composición alfa. Es decir, las partes blancas pueden modificarse, mientras que las partes negras (y las partes fuera de la imagen de máscara) se dejan tal cual. Por desgracia, aunque los ajustes "[-gravity](https://imagemagick.org/command-line-options/#gravity)" y "[-geometry](https://imagemagick.org/command-line-options/#geometry)" te permiten reposicionar la imagen de origen, la imagen de máscara NO se reposiciona, y permanece alineada con la imagen de destino. Así que dejémoslo claro...

La máscara se alinea con la imagen de fondo original.
Cualquier ajuste de gravity/geometry no se le aplica.

Eso significa que si quiero reposicionar la máscara, necesito ampliar la imagen de máscara con la cantidad adecuada de filas y columnas negras. Consulta Splice, añadir filas y columnas de píxeles. Por ejemplo, aquí tienes una versión con "magick" (los argumentos de las imágenes de origen y fondo están intercambiados), con la imagen de máscara ajustada para moverla respecto a la imagen de fondo. |

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

[IM Output]
Recuerda que el operador "[-composite](https://imagemagick.org/command-line-options/#composite)" de los comandos "magick" especifica primero la imagen de destino o fondo. El resultado es como darle a la máscara un desplazamiento de '+10+25', pero sin que se muevan ni la imagen de origen ni la de fondo. Si quieres alinear la máscara con la imagen de origen, tal vez te convenga enmascarar la imagen de origen por separado (usando '[Copy_Opacity](#copyopacity)' u otra técnica). Luego puedes posicionar ese resultado sobre el fondo sin problemas de alineación. Aquí tienes un ejemplo similar, pero esta vez uso una máscara de degradado del mismo tamaño que la imagen de fondo para mezclar las dos imágenes, produciendo un efecto de 'bajío'. |

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

[IM Output]
Esto proporciona una forma sencilla de solapar dos imágenes. Consulta Solapar fotos.

Máscara de composición y transparencia

Por lo anterior, podrías pensar que usar una máscara de composite de tres imágenes es muy parecido a usar '[Copy_Opacity](../static/img/compose/copyopacity)' para establecer una transparencia de la imagen superpuesta y luego componer esa sobre tu fondo. Y para imágenes sin ninguna transparencia (como la anterior) tendrías razón. Pero esa no es toda la historia. Primero, la máscara está ligada a la imagen de destino, en lugar de a la imagen de origen, por lo que no se ve afectada por desplazamientos ni por gravity. Además, a diferencia de '[Copy_Opacity](../static/img/compose/copyopacity)', la imagen de máscara se trata como una imagen puramente en escala de grises. IM ignorará toda transparencia alfa que la máscara pueda tener. Por ello, no necesitas preocuparte de desactivar el canal alfa en la imagen de máscara. Y, por último, la máscara funciona limitando el área que se modificó, lo cual es muy diferente de simplemente enmascarar la imagen de origen. Para una composición '[Over](../static/img/compose/over)' simple, esto es lo mismo que si la máscara se multiplicara con cualquier transparencia de la imagen de origen, para limitar lo que se superpone. Por ello, para imágenes de origen completamente opacas puedes imaginarlo como la transparencia de la imagen de origen. Por ejemplo, superpón dos círculos como de costumbre y luego superpónlos con una máscara que limite el área en la que se cambia la imagen de destino.

  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]

El resultado equivale a que la imagen de los círculos rojos sea 'enmascarada' por la máscara en escala de grises dada, que luego se superpone sobre la imagen de destino. Sin embargo, con cualquier otro tipo de método de composición alfa, es mejor que pienses en la máscara como algo que limita el área de efecto, en lugar de como una máscara de transparencia de la imagen de origen. Aquí usé un método '[Src](../static/img/compose/src)' para reemplazar el área enmascarada del destino con el contenido de la imagen de origen. |

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

[IM Output]
Como ves, solo el área con la máscara definida se reemplaza realmente por el resultado de la composición alfa. Si la máscara solo se usara para modificar la transparencia de la imagen de origen, lo anterior solo mostraría la imagen de origen y nada de la imagen de fondo.

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.

| _Lo anterior fue un fallo importante de larga duración relacionado con el enmascaramiento en composite cuando intervenían imágenes de origen o superpuestas con transparencia, o cuando se intentaba usar composiciones alfa distintas del método de composición '[Over](#over)'. Consulta Fallo de máscara de composite para más detalles.

_
---|---


Componer con mosaicos de imagen

El ajuste "[-tile](https://imagemagick.org/command-line-options/#tile)" en "magick composite" es muy diferente de ese mismo ajuste en "magick" o "magick montage". Si se da, significa que la imagen de origen debe teselarse sobre la imagen de fondo. Por ejemplo, aquí teselamos una 'estrella de color' sobre una imagen de mapa de color netscape... |

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

[IM Output]
Un uso común del teselado en composite es teselar un aviso de copyright semitransparente, u otra nota, sobre las imágenes antes de publicarlas en la red. Para ver ejemplos de esto, consulta los últimos ejemplos de Marca de agua con texto. Ten en cuenta que el ajuste es esencialmente (al menos por ahora) sin argumentos. Es solo un indicador booleano de activado y desactivado para la operación final de "magick composite". Por ello, no puedes usarlo para teselar una imagen de fondo, ya que eso significaría que IM no puede usar la imagen de fondo para fijar el tamaño final del resultado. Sin embargo, puedes teselar una imagen debajo de otra usando '[Dst_Over](#dstover)' en su lugar. |

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

[IM Output]
Además, muchos de los operadores matemáticos son asociativos, lo que significa que el origen y el destino pueden intercambiarse sin afectar al resultado (excepto el tamaño final de la imagen). Actualmente no hay un método sencillo para hacer una composición alfa teselada en el comando "magick". Es una lástima, ya que haría que teselar con una imagen ya en memoria fuera mucho más fácil de lo que es actualmente. La técnica básica para el teselado en composición usando "magick" es clonar la imagen original y teselarla usando uno de los métodos dados en Lienzos teselados. Por ejemplo... |

  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]
Lo anterior reemplaza un 'fondo blanco' de la etiqueta usando el método de composición matemática "[Multiply](#multiply)". Consulta también Usar máscara de imagen, composición matemática.


Métodos de composición especiales

También hay algunos métodos de composición de propósito especial que se han añadido por una u otra razón.

Mathematics (método de composición matemático definido por el usuario)

Este método de composite toma 4 valores numéricos para permitir al usuario definir muchos métodos de composición matemáticos distintos. Los cuatro argumentos, "A", "B", "C" y "D", definen la fórmula...

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

donde "Sc" es la imagen de origen o superposición, y "Dc" es la imagen de fondo o destino. Deben proporcionarse los cuatro valores. Por ejemplo, podríamos generar el equivalente de un método de composición '[Multiply](#multiply)' usando los valores "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]
Origen | | [IM Output]
Destino | | [IM Output]
Resultado
---|---|---|---|---

De forma similar, buscando o deduciendo la fórmula necesaria, puedes generar otros métodos de composición, como... [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]
O '[LinearLight](#linearlight)', que se define directamente usando los argumentos "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 forma similar, puedes generar otros métodos de composición como... Método de composición | Argumentos de 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
Otros métodos de composición requieren el uso de cuadrados, raíces cuadradas, división o incluso varias funciones especiales por tramos y condicionales, lo que impide definirlos usando una simple función polinómica suave como la que proporciona este método. También puedes crear nuevos métodos de composición, por ejemplo una alternativa ampliada 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]
Esta composición particular hecha a mano es importante como medio para añadir degradados sesgados, como ondas sinusoidales. O bien otra variante que puede usarse para 'efectos de iluminación'... |

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

[IM Output]
El método de composición matemático es especialmente importante para permitirte hacer tipos especiales de matemáticas sobre degradados que de otro modo serían muy complejos de lograr usando varios pasos individuales. | El método de composición '[Mathematics](#mathematics)' se añadió a la versión 6.5.4-3 de IM. Y actualmente solo está disponible usando el operador "-compose". No está disponible desde el comando "magick composite" debido a su necesidad de argumentos.
---|---

Change_Mask (hacer transparentes los píxeles similares)

Este es un método inusual que solo hará totalmente transparentes determinados píxeles de la imagen de destino. Es decir, los píxeles de la imagen de destino que coincidan con la imagen de origen dada, según el ajuste actual del factor fuzz. Esto puede usarse, por ejemplo, para volver a añadir transparencia a una imagen que se superpuso sobre un fondo complejo (pero muy distinto). Por ejemplo, este fue exactamente el problema que planteó Jesper Eije...

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

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

Fácil. Ten en cuenta que, como los colores de las imágenes JPEG suelen tener ligeros cambios de color debido a la naturaleza con pérdida del formato de archivo, se necesitará un pequeño ajuste de factor fuzz para hacer coincidir colores muy similares. Además, si la parte cambiada de la imagen coincide con el color o patrón del fondo, obtendrás 'agujeros' en la imagen o máscara resultante, por lo que siempre se aconseja precaución al usar esto con imágenes que sean muy similares. Al intercambiar las dos imágenes, de modo que la imagen de fondo se dé como imagen de destino, puedes extraer las partes del fondo que fueron reemplazadas o modificadas por la imagen superpuesta. |

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

[IM Output]
Ten en cuenta que el resultado es solo una máscara de forma transparente de la imagen de fondo original, donde los píxeles similares simplemente se limpian a transparencia. No intentará generar transparencias parciales ni cambiar colores, por lo que podría dejar un 'halo' de colores de fondo ligeramente distintos alrededor de la imagen donde la superposición original y el color de fondo se fusionaban. Como este método de composición solo 'limpia' los píxeles a transparencia total, siempre se añadirá un canal alfa a la imagen resultante. No obstante, el color de la imagen de destino no se limpia, como sí ocurre en la mayoría de los demás métodos de composición alfa. Por ello, puedes negativizar el canal alfa para obtener los colores sin cambios. |

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

[IM Output]
En este caso, el orden de las imágenes de entrada no importa, salvo que se haya fijado un factor fuzz grande. Recuerda que los colores provendrán de la imagen de destino, con la diferencia entre las imágenes definiendo la máscara de forma resultante. Para más información sobre estos problemas, consulta Eliminación de fondo. El resultado suele tener una utilidad directa limitada. No obstante, puede usarse para generar máscaras de mapa de bits de los cambios entre las imágenes (de ahí su nombre). | _El método de composición '[ChangeMask](#changemask)' se añadió a IM v6.3.4, para proporcionar un método de optimización de la transparencia en animaciones GIF. Ningún otro método de composición existente proporcionaba los requisitos necesarios, sin combinar 3 o más métodos de composición. En concreto, el requisito booleano (o de umbralización por factor fuzz) necesario para la optimización de la transparencia.

El resultado, sin embargo, es tan útil por sí mismo que se puso a disposición de los usuarios para su uso directo, y así definió el nombre de este método de composición bastante complejo._
---|---

Métodos de efecto de mapeo de imágenes

También hay un par de métodos especiales que no son estrictamente métodos de composición. En lugar de combinar directamente las dos imágenes píxel a píxel, la imagen de origen o de solape es un mapa de control especial, para algún efecto mayor. Aunque los métodos que representan son relativamente simples, su uso es tan complejo que tienen su propia sección de ejemplos. Efectos de mapeo de imágenes. Estos métodos especiales incluyen... El método 'Blur' proporciona una forma de desenfocar imágenes de distintas maneras píxel a píxel. Puede generar una amplia gama de efectos de desenfoque de imagen hechos a mano. Consulta Mapeo de desenfoque variable para más detalles. El método 'Displace', por otro lado, proporciona una técnica de desplazamiento de búsqueda de píxeles tanto absoluta como relativa que genera no solo métodos específicos de distorsión de imagen, sino también efectos de cristal, lente y ondulación. Consulta Mapeo de distorsión y desplazamiento para más detalles.