⚠️ Este é um site de tradução não oficial, sem relação com a ImageMagick Studio LLC. Para informações oficiais, consulte a página original (https://usage.imagemagick.org/compose/index.html).

Exemplos do ImageMagick -- Composição de Imagens

Prefácio e Índice dos Exemplos do ImageMagick
Composição de Imagem no IM

Composição de Imagem no IM

A composição de imagens é o processo de mesclar duas (e apenas duas) imagens de várias maneiras. Ela está associada à Composição Alfa, que descreve o resultado com base em qual parte da sobreposição é transparente. A composição de imagens é usada para mesclar e calcular a média de imagens, transferir canais de imagem, cortar, juntar ou sobrepor em camadas segmentos de formas irregulares das imagens. Ou, ainda, como parte de operações matemáticas complexas. Uma boa introdução alternativa à composição de imagens é SVG Compositing in 30 Minutes. Ou você pode descobrir os detalhes matemáticos precisos lendo a página SVG Alpha Compositing, que descreve os métodos de composição de imagem mais importantes. Os comandos a seguir são os dois métodos diretos de 'composição' de imagens disponíveis no ImageMagick...

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

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

O comando "magick composite" é o método convencional de composição no IM. Ter um comando dedicado demonstra o quão importante é a composição de imagens. O operador "[-composite](https://imagemagick.org/command-line-options/#composite)" do "magick" também pode fazer composição de imagens como parte de uma tarefa maior de processamento de imagem. </> Observe a ordem invertida das imagens ao usar "magick". A ordem é prática, pois você geralmente trabalha com uma tela primária sobre a qual prepara e mescla imagens para formar uma nova imagem. A ordem das imagens é importante. Exemplos práticos de ambas as técnicas (e mais) podem ser revistos em Camadas de Múltiplas Imagens, e é uma leitura recomendada antes de continuar.

Definição e Termos

A imagem mais importante é a imagem background, também frequentemente chamada de imagem destination, que é a imagem modificada pela composição. A imagem background define não só o tamanho final da composição, mas também preserva os metadados, como 'comments', 'labels', 'density', 'profiles' e assim por diante. Sua posição é fixa e geralmente forma a tela que você está construindo, daí o nome background. Lembre-se disso!

A imagem overlay, ou imagem source, controla como o método "[-compose](https://imagemagick.org/command-line-options/#compose)" deve modificar a imagem background ou destination fixa. A imagem pode ser reposicionada em relação à imagem background fixa (geralmente usando as configurações "[-geometry](https://imagemagick.org/command-line-options/#geometry)" e "[-gravity](https://imagemagick.org/command-line-options/#gravity)"). No entanto, tanto a imagem overlay quanto quaisquer metadados que ela contenha são descartados quando a operação de composição termina.

Às vezes uma terceira imagem mask é adicionada ao comando. Essa imagem é usada para definir e controlar quais partes da imagem background serão modificadas, e em que grau, pela composição resultante. Para mais detalhes, veja Mascaramento na Composição abaixo. A partir do IM v6.5.3-4, a Configuração Define especial "compose:outside-overlay" (veja Configuração Outside-Overlay) pode ser definida com o valor 'false' para desativar qualquer modificação na imagem background fora da área retangular coberta pela imagem overlay. Sem isso, alguns method s de composição limparão as áreas não cobertas pela overlay, como parte da definição de compose.
O method de composição de fato é controlado pela configuração "[-compose](https://imagemagick.org/command-line-options/#compose)", cujo valor padrão é 'Over'. Ou seja, a imagem de origem é desenhada sobre (Over) a imagem background, que é o que a maioria das pessoas imagina ao realizar composição de imagens. A maior parte desta seção dos Exemplos do IM é usada para detalhar o que os vários 'métodos' de composição fazem e como você pode utilizá-los. Para ver os resultados dos métodos de composição, veja Tabelas dos Métodos de Composição. As tabelas não ilustram o uso pretendido do método, apenas a saída bruta a partir de várias imagens de teste. O método de composição não diferencia maiúsculas de minúsculas, e os caracteres '_' ou '-' são opcionais. Assim, o método de composição "Dst_Over" também pode ser especificado como: "dst_over", "dst-over", "DstOver", "dstover", ou mesmo "dstOVER". Todos significam a mesma coisa. Além disso, os métodos de composição 'Over', 'ATop', 'In' e 'Out' são abreviações dos nomes mais extensos 'Src_Over', 'Src_ATop', 'Src_In' e 'Src_Out'. Além da longa lista de métodos "[-compose](https://imagemagick.org/command-line-options/#compose)", há alguns que exigem argumentos numéricos extras para funcionar corretamente. No comando "magick composite" esses argumentos são passados usando as opções especiais: "[-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)" e "[-distort](https://imagemagick.org/command-line-options/#distort)". A partir do IM v6.5.3-4, o comando "magick" pode passar argumentos especiais ao operador "[-composite](https://imagemagick.org/command-line-options/#composite)" usando a Configuração Define "compose:args". Para exemplos, veja os métodos especiais Dissolve e Blend abaixo.

Operadores de Composição de Imagem

Além dos dois estilos diretos de composição de imagens mostrados acima, há vários outros operadores de imagem que também usam a composição alfa como parte de seu processamento interno de imagem. Essas operações são afetadas pela configuração "[-compose](https://imagemagick.org/command-line-options/#compose)" atual, embora usem ou seu próprio posicionamento interno, ou a técnica de posicionamento por deslocamento de tela virtual de uma Imagem em Camadas. Aqui está uma lista de todos os operadores que se sabe serem afetados pela configuração de composição...

Composição de Pares de Imagens Exemplos práticos usando os operadores primários de composição de imagens, tanto o comando primitivo "magick composite", quanto o operador -composite" do "magick". Esses métodos de baixo nível usam as Configurações de Geometria/Gravidade para determinar a posição da imagem de sobreposição. Operadores de Camadas Os operadores de imagem em camadas "[flatten](layers.html#flatten)", "[mosaic](layers.html#mosaic)" e "[-layers merge](layers.html#merge)" sobrepõem todas as múltiplas imagens da sequência de imagens atual sobre uma única tela nova, cujo tamanho e posição são determinados pelo operador de camadas escolhido. Isso usa as Configurações de Deslocamento de Tela Virtual/Página para determinar a posição da imagem de sobreposição. Operadores de Expansão de Borda Operadores que sobrepõem cada imagem individual sobre telas preparadas internamente. Isso inclui operadores como "[-border](https://imagemagick.org/command-line-options/#border)", "[-frame](https://imagemagick.org/command-line-options/#frame)" e "[-extent](https://imagemagick.org/command-line-options/#extent)". (Veja Adicionando/Removendo Bordas de Imagem). Nenhuma informação de posicionamento é usada, embora "[-extent](https://imagemagick.org/command-line-options/#extent)" utilize deslocamentos de gravidade e geometria para sobrepor sobre uma imagem de fundo de cor sólida. Desenhar Imagens O método de sobreposição de imagem "[-draw 'image...'](https://imagemagick.org/command-line-options/#draw)" sobrepõe uma única imagem source externa sobre uma lista de imagens de destino. É a única técnica de composição de imagens disponível para o "[mogrify](basics.html#mogrify)". Ele obtém a imagem de 'sobreposição' de uma fonte externa, permitindo superar a limitação daquele comando de não ter operador de lista. Informações de redimensionamento e posição também são fornecidas pelo usuário, e essas podem ser afetadas pela gravidade. Layers Composite Multi-Lista O operador "[-layers composite](anim_mods.html#composite)" permite compor duas listas separadas de múltiplas imagens, um par de imagens por vez, para formar uma nova sequência mesclada de múltiplas imagens. Ele também compõe uma sequência de imagens com uma única imagem (que pode ser uma imagem de 'sobreposição' estática, ou uma imagem de 'destino' estática). É também o ÚNICO operador de composição que permite usar TANTO o deslocamento "[-geometry](https://imagemagick.org/command-line-options/#geometry)" universal afetado por "[-gravity](https://imagemagick.org/command-line-options/#gravity)" (globalmente), QUANTO os deslocamentos de tela virtual "[-page](https://imagemagick.org/command-line-options/#page)" de imagens individuais, a partir daquela posição global. Esse operador de composição é especialmente importante para compor Animações de Imagem, ou outras sequências de imagens, como um todo, em vez de precisar de um script para processar cada par de imagens por vez.


Posicionando a Imagem de Sobreposição

Configurações de Geometria/Gravidade da Composição

Na Composição Alfa normal, a configuração "[-geometry](https://imagemagick.org/command-line-options/#geometry)" é usada com "[-gravity](https://imagemagick.org/command-line-options/#gravity)" para posicionar a imagem de origem em relação à imagem de destino. O uso dessas configurações é abordado em grande detalhe em Posicionamento de Imagens usando Gravidade. Note que o componente de tamanho de "[-geometry](https://imagemagick.org/command-line-options/#geometry)" é especial, pois ele Redimensiona uma Imagem (geometry). No "[composite](../static/img/compose/composite)" ele redimensiona a imagem de origem, mas no "[convert](../static/img/compose/magick)" a última imagem da sequência de imagens é redimensionada. Isso é tecnicamente um aspecto separado da Composição de Imagem. Veja Redimensionamento por Geometria e Compondo imagens em camadas com Composite. Na Composição Alfa apenas duas imagens estão envolvidas, a 'origem' e o 'destino' (ou 'fundo'), embora uma terceira Imagem de Máscara também possa ser fornecida para limitar a área afetada pela composição.

Deslocamentos de Tela/Página em Camadas

A composição de Imagens em Camadas usa uma filosofia muito diferente. Todas as imagens (quantas você quiser) são tratadas igualmente na ordem em que são dadas. Todas elas têm um "[-page](https://imagemagick.org/command-line-options/#page)" ou Deslocamento de Página que posiciona o canto superior esquerdo de cada imagem em relação a uma 'origem' de tela virtual (o deslocamento padrão), mas sem gravidade. Para processar múltiplas imagens, uma nova imagem de fundo é gerada usando a cor "[-background](https://imagemagick.org/command-line-options/#background)" atual, com um tamanho que depende da operação sendo realizada. Presume-se que essa seja a imagem de 'destino' (a tela). TODAS as imagens são compostas sobre essa nova tela, uma de cada vez, em sequência. Mesmo que apenas duas imagens sejam fornecidas, uma nova imagem ainda é criada e duas composições separadas são aplicadas. Ou seja, pode ser lento. Todas as imagens são tratadas como imagens de 'origem', e a ordem em que são listadas determina o resultado. O deslocamento de 'camada', porém, NÃO é afetado pela gravidade. Como cada imagem pode ter um 'deslocamento de tela' separado, a composição de múltiplas imagens é melhor aplicada usando Operadores de Camadas de Imagem, bem como a Composição de Sequência de Múltiplas Imagens para animações. Os dois estilos são técnicas de posicionamento muito diferentes, e é importante que você use o estilo correto para as técnicas de composição que pretende usar.

Ambas as Técnicas de Posicionamento

Apenas uma técnica de composição, o operador de Composição em Camadas de lista de múltiplas imagens, permite que você use AMBOS os métodos de posicionamento simultaneamente. Primeiro, as duas listas são posicionadas globalmente usando "[-geometry](https://imagemagick.org/command-line-options/#geometry)" e "[-gravity](https://imagemagick.org/command-line-options/#gravity)", o que é aplicado ao tamanho da tela virtual da primeira imagem de cada lista. Depois, cada imagem individual da lista é deslocada usando "[-page](https://imagemagick.org/command-line-options/#page)" a partir daquela posição global, para determinar a posição final. É claro que, se uma imagem de sobreposição não couber em uma determinada imagem de destino dentre as imagens fornecidas, ela será recortada por aquela imagem. Por isso, geralmente é uma boa ideia usar apenas imagens totalmente coalescidas como imagem(ns) de destino, no tamanho apropriado necessário. As imagens resultantes podem, é claro, ter seu tamanho recortado novamente depois.


Métodos de Composição Alfa Duff-Porter

Os métodos de composição de imagem Duff-Porter são um conjunto tradicional de 12 métodos que são muito bem definidos. Eles são conhecidos como Composição Alfa, pois as imagens são mescladas de acordo com algum aspecto da transparência da imagem, ou 'Canal Alfa'. Você pode encontrar as definições matemáticas para eles no documento SVG Alpha Compositing. Aqui está uma tabela clássica mostrando os resultados desses 12 métodos com duas imagens triangulares. [IM Output] Veja também as Tabelas Brutas dos Métodos de Composição, com diagramas mostrando mais métodos de composição com diferentes formas e gradientes de imagem. O método de composição padrão (quando completamente indefinido) é 'Over', e é o que a maioria das pessoas normalmente deseja ao compor imagens. Para entender, e lembrar, o que cada um dos métodos de composição acima faz, a imagem resultante seria a mesma que se você dissesse...

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


****
Ou seja, a imagem resultante para o método 'ATop' é equivalente a "a imagem de sobreposição 'ATop' (sobre) a imagem de fundo". Isto é, a imagem de fundo manterá sua 'forma', mas as cores da imagem de origem ficarão 'por cima' do fundo. No entanto, lembre-se de que a ordem das imagens é invertida ao usar o operador "[magick -composite](https://imagemagick.org/command-line-options/#composite)". Esses 12 métodos definem não só quais das duas imagens são 'visíveis' no resultado, mas também como isso afeta a parte da imagem que NÃO é coberta pela imagem source. Ou seja, se o 'fundo' original é mantido como está ou completamente limpo. Deixei propositalmente a imagem de 'destino' na tabela acima maior, para que você possa ver se o restante da imagem foi limpo ou não. Esses métodos de 'limpeza' são: '[Src](#src)', 'In', '[Dst_In](#dstin)', 'Out', 'Dst_ATop' e '[Clear](#clear)'. A partir do IM v6.5.3-4 você pode usar uma Configuração Define "compose:outside-overlay=false" para impedir que a composição Duff-Porter limpe a imagem destination fora da área sobreposta. Veja exemplos nos métodos de composição '[Copy](#copy)' e '[Clear](#clear)', e na Configuração Outside-Overlay, para detalhes. Note que '[Copy](#copy)' é um '13º' método de composição especial fornecido pelo IM. Basicamente, é equivalente a uma composição '[Over](#over)', mas com limpeza do fundo na área sobreposta. No entanto, em termos de implementação, é uma composição '[Src](#src)' com outside-overlay (ou limpeza de fundo) desativado. O ImageMagick v5 e anteriores não limpavam nenhuma área não coberta pela imagem de origem. Esse era um tratamento incorreto dos operadores de Composição Duff-Porter, e foi corrigido durante o desenvolvimento do IM v6.
Um dos aspectos mais importantes dos métodos de Composição Alfa Duff-Porter é que eles nunca tornam visível qualquer 'pixel colorido totalmente transparente'. Isso é importante porque uma parte totalmente transparente da imagem tem uma cor indefinida. Ela poderia, na verdade, conter QUALQUER valor de cor sem afetar o resultado visível da imagem. Veja Controlando a Transparência da Imagem para detalhes sobre 'como tratar o canal de transparência'. É por isso que a composição Duff-Porter é frequentemente o método de mascaramento preferido, em vez da alternativa '[CopyOpacity](#copyopacity)', que substitui completamente o Canal Alfa de uma imagem e pode tornar visíveis as cores invisíveis indefinidas.

Over (sobrepor a imagem sobre o fundo)

Este é o método de composição padrão, aquele em que todos pensam ao sobrepor uma imagem em cima de outra. A imagem de sobreposição é colocada 'sobre' a imagem de fundo, da mesma forma que uma 'célula de animação' ou uma 'transparência de retroprojetor' pode ser colocada sobre uma cena ou imagem de fundo. É tão comum que duvido que eu realmente precise dizer muito mais. Então, vamos apresentar um exemplo de sobreposição da imagem de uma única letra sobre uma imagem de fundo. |

  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]
A sobreposição pode ser centralizada com gravidade como acima, ou posicionada com exatidão usando uma configuração "[-geometry](https://imagemagick.org/command-line-options/#geometry)". Se for posicionada fora dos limites do fundo, será recortada ou ignorada, conforme apropriado. Neste exemplo, a imagem é sobreposta usando o operador "convert -composite", mas posicionada a meio caminho acima do fundo. Observe a inversão da ordem das imagens. |

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

[IM Output]

Dst_Over (colocar a imagem 'sob' o fundo)

Como outros métodos 'Dst_', este funciona quase exatamente como a versão 'Src_' do método, mas com as imagens de sobreposição e de fundo trocadas. Assim, '[Dst_Over](#dstover)' é equivalente a colocar a imagem de sobreposição de origem 'sob' o destino. O resultado é que apenas as partes da nossa imagem de origem ou sobreposição que não estão ocultas pela imagem de destino ou fundo ficarão visíveis, à medida que despontam por baixo. Isso NÃO é exatamente o mesmo que '[Over](#over)' com as imagens de argumento trocadas, pois o tamanho, o posicionamento e outros metadados da imagem ainda vêm da imagem de fundo ou destino. Lembre-se de que o tamanho da imagem de saída é o mesmo da imagem de 'fundo', e a posição da imagem de origem é relativa ao fundo (usando "[-geometry](https://imagemagick.org/command-line-options/#geometry)" e "[-gravity](https://imagemagick.org/command-line-options/#gravity)"). Por exemplo, aqui sobrepomos uma label 'A' preta 'sob' o nosso A branco original. Podemos reposicionar o A preto em relação ao fundo A branco. Como você pode ver, isso é ótimo para adicionar uma sombra dura, sem precisar se preocupar em expandir o tamanho da imagem. |

  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]
O importante a observar é que o tamanho do fundo é preservado, enquanto a posição da sobreposição, relativa ao fundo, pode ser modificada e é recortada pelo fundo. É isso que torna este operador tão importante e útil. A configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" do "magick composite" também torna esta forma de 'over' muito útil como maneira de ladrilhar sob uma imagem. Por exemplo, ladrilhe o padrão de tabuleiro de xadrez embutido sob a letra sombreada que acabamos de criar. |

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

[IM Output]

Src ('recortar' às dimensões da imagem de fundo)

Este operador substitui completamente a imagem de fundo pela imagem de sobreposição. As cores e a transparência do fundo são completamente descartadas, deixando uma imagem em branco do mesmo tamanho do destino original, sobre a qual é aplicada a imagem de origem. Mas para que isso serve? Bem, para duas coisas. Primeiro, você está efetivamente substituindo a imagem de fundo pela imagem de origem, mas preservando todos os metadados associados à imagem de fundo original. Ou seja, a imagem muda, mas os metadados não. Segundo, o tamanho da imagem final não muda, mesmo que o conteúdo da imagem mude. Ou seja, a imagem resultante tem o mesmo tamanho do fundo original. Assim, você pode usar este operador efetivamente para recortar ou adicionar uma borda à imagem de origem ou sobreposição, de modo que ela fique do mesmo tamanho da imagem de fundo dada (junto com os metadados do fundo). Por exemplo, suponha que você queira criar uma imagem plasma e recortá-la para que fique do mesmo tamanho da imagem rose embutida. Isso permite que você faça isso sem precisar saber o tamanho exato da imagem rose. |

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

[IM Output]
É claro que o acima é equivalente a um "[-crop](https://imagemagick.org/command-line-options/#crop)" da imagem plasma, não a um 'redimensionamento'. Os metadados da imagem original também são preservados. Ou seja, embora esta agora seja uma imagem plasma, os metadados da imagem dizem que ela ainda é uma imagem 'rose' e veio da fonte de imagem "rose:".
Se a sobreposição for menor, o restante da imagem de fundo é substituído por transparência para preenchê-lo. Observe, porém, que o fundo deve ter um canal alfa, ou ele preencherá o espaço extra com preto (a cor que 'none' ou 'transparent' tem sem nenhum canal alfa). |

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

[IM Output]
[IM Output]

Copy (copiar ou substituir a imagem)

Este operador não é um dos 12 métodos de composição 'Duff-Porter', razão pela qual não estava no gráfico acima. Ainda assim, é muito importante. Ele funciona exatamente como o método de composição "Src", mas não toca na imagem de fundo fora da área sobreposta. Ou seja, ele limita sua capacidade de cópia apenas à área sobreposta e a nada mais. Isso permite que você recorte uma pequena seção de uma imagem maior, trabalhe na imagem menor por rapidez, e depois 'copie' os resultados de volta para a imagem maior sem tocar nas outras áreas dessa imagem. Isso, por sua vez, permite otimizar o processamento de imagens muito grandes. Aqui está o mesmo exemplo que usei acima, mas usando '[Copy](#copy)' em vez de '[Src](#src)', mostrando como o IM não desperdiça tempo limpando o restante do fundo, como exigido pelo algoritmo 'Duff-Porter'. |

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

[IM Output]
Este operador também é muito semelhante a '[Over](#over)', exceto que a transparência da imagem de origem também é copiada, substituindo completamente a imagem de fundo. Se não houver transparência, ele funcionaria exatamente como '[Over](#over)'. Internamente, ele modifica a configuração especial de controle de composição "outside-overlay" (veja a seguir).

Configuração Outside-Overlay

A partir do IM v6.5.3-4, a capacidade de controlar se um método de composição também afetará áreas fora da área sobreposta tornou-se controlável pelo usuário por meio da Definição de "compose:outside-overlay". Ela está 'ativa' por padrão, mas você pode desativá-la definindo seu valor como "false". Por exemplo, aqui está um equivalente ao Método de Composição Copy, mas usando o mais tradicional Método de Composição 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 um exemplo do uso desta flag, veja Sobreposições de Canto PageCurl.

Outside-Overlay vs 'clip-to-self' do SVG

A definição "compose:outside-overlay" é, em muitos aspectos, semelhante ao uso do atributo 'clip-to-self' do SVG. Ambos restringem a composição apenas à região sobreposta, sem afetar o restante da imagem de destino. No entanto, o 'clip-to-self' do SVG se aplica apenas à área pintada (como uma máscara), enquanto a configuração 'outside-overlay' do IM se aplica à área retangular completa da imagem de origem onde ela sobrepõe a imagem de fundo. Isso não fica muito claro no manual de Composição do SVG, pois os exemplos dados não são muito bem explicados, tornando-os bastante confusos. Mas se você quiser tentar entendê-los, veja SVG Composition 'clip-to-self' property ou Understanding SVG 1.2 composition, clip-to-self. Note que uma Máscara de Escrita também pode ser usada para obter esse tipo de controle, mas usando áreas com formato de acordo com a máscara fornecida. Nesse aspecto, ela é muito mais parecida com o atributo 'clip-to-self' do SVG, onde a imagem de origem também é usada como máscara de escrita.

Dst (uma composição 'no-op')

Este operador não faz nada. A imagem de origem, ou sobreposição, é completamente ignorada, e a imagem de destino, ou fundo, é deixada inalterada. O uso real deste método é como meio de 'desligar' uma operação de composição alfa em outros operadores de imagem. Por exemplo, usamos o Operador de Moldura para emoldurar a nossa imagem rose (com um fundo transparente), mas depois usamos "-compose Dst" para impedir que a imagem seja adicionada à moldura. Em outras palavras, usamos a rose apenas para definir o tamanho da moldura interna do resultado. A moldura, e apenas a moldura, é o resultado. |

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

[IM Output]
A operação especial Alpha Set garante que um Canal Alfa esteja disponível na imagem, ou você acabará com um meio preto em vez de um transparente. O "[-bordercolor](https://imagemagick.org/command-line-options/#bordercolor)" define a cor dentro da moldura, que geralmente é colocada sob a imagem de origem. O método '[Dst](#dst)' também pode ser útil em um script para desativar uma composição alfa em um comando grande e complexo, sem precisar criar dois comandos IM diferentes.

Dst_In (ou 'mascarar' o fundo com a origem)

O método '**Dst_In**' é como usar a imagem de origem como uma máscara 'Copy_Opacity' para a imagem de fundo. Ele remove a forma da imagem de sobreposição da imagem de fundo, como um cortador de biscoitos que recorta a forma de um biscoito na massa. Por exemplo, vamos usar o sofisticado 'A' de cima como máscara para recortar sua forma na imagem rose. |

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

[IM Output]
Ao contrário do método '[Copy_Opacity](#copyopacity)', você NÃO pode usar uma imagem em escala de cinza como máscara, pois apenas o canal alfa da imagem de sobreposição é usado nesta operação. Qualquer cor na sobreposição é completamente ignorada. | Tudo o que os métodos 'Dst_In' e 'Src_In' realmente fazem é multiplicar os canais alfa das duas imagens. A cor da imagem apropriada (de acordo com o método) é preservada.
---|---

Dst_Out (ou uma operação de 'apagar')

Usando a metáfora da 'massa de biscoito' de '[Dst_In](#dstin)', o resultado do método '**Dst_Out**' é a massa que sobrou depois que um biscoito foi recortado. Ele pode ser usado para abrir furos, ou dar mordidas, na imagem de fundo, usando a forma da sobreposição. Qualquer cor na sobreposição é, novamente, completamente ignorada. |

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

[IM Output]
As fórmulas matemáticas desses dois métodos de composição são projetadas explicitamente para que, se você usar '[Dst_In](#dstin)' e '[Dst_Out](#dstout)' no mesmo conjunto de imagens, você possa encaixá-las de volta (usando o método '[Plus](#plus)') como um quebra-cabeça. Por exemplo, aqui 'adicionamos' (usando a composição '[Plus](#plus)') as duas últimas imagens que geramos acima. Esta imagem é exatamente igual (pixel a pixel) à imagem 'rose:' original. |

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

[IM Output]
Apagar parte de uma imagem não é uma tarefa fácil em nenhum programa gráfico. Por exemplo, uma operação "[-draw](https://imagemagick.org/command-line-options/#draw)" só pode adicionar cor a uma imagem. Ela não removerá cor depois que ela tiver sido aplicada à sua tela. Pense em um pintor que está pintando um anúncio em uma porta ou janela de vidro. Ele, ou ela, pode adicionar tinta, mas não pode remover tinta pintando por cima dela. Ao desenhar a forma que você quer apagar sobre uma tela transparente, você pode então usar '[Dst_Out](#dstout)' para removê-la da sua imagem de trabalho. É um pouco como o nosso pintor limpando cuidadosamente a tinta molhada com um pano de formato especial. A forma pode ser usada para remover toda ou parte da cor, tornando-a totalmente ou parcialmente transparente. Por exemplo, suponha que você queira desenhar um símbolo de lua crescente em uma tela transparente. Este método de composição alfa torna essa forma difícil fácil de desenhar, sobrepondo dois 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]
| A segunda imagem deve ser criada e desenhada entre parênteses. Se você não fizer isso, descobrirá que "[-draw](https://imagemagick.org/command-line-options/#draw)" desenhará TANTO na imagem de sobreposição QUANTO no seu fundo original, o que obviamente está errado. Se você não usasse parênteses, encontraria um círculo de pixels pretos semitransparentes ao redor da parte apagada da imagem. Eu sei, aconteceu comigo enquanto criava este exemplo, para minha própria irritação.
---|---

ATop ('Over', mas recortado à imagem de fundo)

Como '[Over](#over)', mas limita o resultado à forma original da imagem de fundo. Em outras palavras, o canal alfa do destino permanece inalterado, mas as cores da imagem são sobrepostas por quaisquer partes não transparentes da imagem de origem. Se a imagem de fundo for totalmente opaca (sem transparência), esta operação agirá exatamente como a composição '[Over](#over)' normal. Ela só difere quando o fundo contém transparência, que também recorta a sobreposição. O que torna isso útil é para sobrepor efeitos de iluminação e sombreamento que ficam limitados ao objeto (forma) do destino. Por exemplo, digamos que temos um círculo vermelho e queremos adicionar um realce como se fosse uma bola tridimensional. Podemos criar o círculo e o realce, e depois sobrepor o realce usando '[ATop](#atop)' para limitá-lo ao 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]
| A criação do realce branco foi feita usando "-negate" para garantir que a imagem inteira fosse de fato branca. Isso foi usado para evitar um bug no operador "-blur", que já foi corrigido na versão 6.2.4 do IM. Veja Bug do Blur com Transparência para mais detalhes sobre esse bug antigo.
---|---
De maneira semelhante, podemos adicionar uma sombra difusa à nossa bola, recortada aos limites da própria bola, para que ela pareça ainda mais 3-D. Deixarei como exercício para o leitor descobrir como o comando a seguir consegue esse resultado. |

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

[IM Output]
Com um pouco mais de cuidado com as imagens preparatórias, a imagem acima pode ser tornada ainda mais realista. Para mostrar o uso deste método de composição, não está nada mau. Mais exemplos do uso do método de composição '[ATop](#atop)' podem ser vistos em Gerando Logotipos 3-D.

Clear (Limpar o Fundo. Ignorar a imagem de sobreposição)

Este é um método de composição incomum, que essencialmente ignora a imagem de sobreposição por completo e apenas limpa a imagem de fundo. Isso o torna um método ideal para criar uma tela transparente ou preta, do mesmo tamanho da imagem de fundo, para projetos complexos. Como a imagem de sobreposição não é usada, uma imagem "null:" de um único pixel é uma boa sobreposição para usar. |

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

[IM Output]
É claro que a operação Alpha Set (embora não seja necessária neste caso) garante que o destino tenha um canal alfa que possa ser usado ao limpar a imagem para transparência. Se você especificamente desligar o canal alfa, então o operador limpará a imagem para preto, devido à matemática envolvida. |

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

[IM Output]
A Configuração Define especial "compose:outside-overlay" permite que você limite essa limpeza apenas à área sobreposta, independentemente de a imagem de sobreposição conter transparência ou não. Por exemplo: |

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

[IM Output]

Xor (Limpar a área compartilhada)

Este é um método de composição muito estranho e pouco usado. Ele sobrepõe duas imagens e depois limpa a área sobreposta para transparência. |

  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]
As coisas ficam ainda mais interessantes quando uma terceira imagem é submetida a xor sobre o resultado acima. |

  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 você pode ver, sobrepor múltiplas imagens pode produzir efeitos maravilhosos, em que qualquer número par de imagens sobrepostas ficará transparente, enquanto qualquer número ímpar de imagens sobrepostas resultará na última imagem sobreposta transparecendo.

FUTURE:  Efeitos Xor em imagens semitransparentes ficam extremamente estranhos.
Explore isto e crie um exemplo demonstrando essa estranheza.

Métodos de Composição Matemáticos

Este grupo de métodos de composição permite que você realize operações matemáticas com as imagens. Isso pode não parecer muito útil, mas para a manipulação de baixo nível de imagens, os métodos permitem que você faça coisas que normalmente talvez não pensaria. Ao contrário dos métodos de composição Duff-Porter anteriores, eles geralmente são métodos de escala de cinza. Ou seja, são normalmente aplicados a imagens em que uma ou ambas são em escala de cinza, e geralmente não contêm transparência. Isso não quer dizer que a transparência não possa ser usada (veja Composição Matemática e Alfa abaixo), mas não é uma prática muito comum. O uso padrão das Composições Matemáticas é definido pela especificação do formato de arquivo de imagem SVG. Você pode ler mais sobre eles em SVG Composition Guide (2009), também em Pegtop Blend Modes e SimpelFilter: Photoshop Blend Modes. A imagem de gradiente especial que você vê ao lado de cada um dos operadores a seguir visualiza o operador em termos de como ele afeta os valores de cor. O resultado é produzido compondo duas imagens de gradiente, como no exemplo a seguir...

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

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Result
---|---|---|---|---

Basicamente, se você usar o valor de cor do pixel de sobreposição (origem) verticalmente, e o pixel de fundo (destino) horizontalmente, poderá consultar o valor que resultará da aplicação daquele operador com aqueles valores. No exemplo acima, você verá que '[Multiply](#multiply)' geralmente torna as imagens mais escuras, e que qualquer valor preto (0) em qualquer uma das imagens de entrada produzirá um resultado preto. Algo que pode ser muito útil. [IM Output]

Multiply ( ) (tornar o branco transparente para diagramas/texto)

É um dos métodos de composição mais úteis, porém subestimados, e é uma simples multiplicação das duas imagens. Sua fórmula é, é claro: _Src_ *_Dest_ Isso significa que, se uma das imagens for branco puro, o resultado será a outra imagem. Por outro lado, se uma imagem for preta, o resultado será preto. Entre esses extremos, uma imagem escurecerá a imagem de destino pela quantidade dada. Note que 'Multiply' só escurecerá uma imagem, nunca a clareará. Ou seja, ele 'atenua' uma imagem em direção ao preto, o que torna este método de composição um estilo de composição 'Burn'. (Veja Métodos de Composição de Iluminação abaixo) |

  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 muito bem em muitas situações, mas é especialmente bom quando uma das imagens tem linhas pretas (ou em escala de cinza) sobre um fundo majoritariamente branco, como imagens de texto. Se ambas as imagens contiverem regiões de cor, você pode obter resultados incomuns. Em outras palavras, esta técnica é perfeita para sobrepor imagens e outros diagramas diretamente sobre desenhos de linha com um fundo branco ou de cor muito clara. Por exemplo, quero adicionar alguns diagramas a uma página de texto que será incluída em uma imagem renderizada por ray-tracing. Você pode ver essa 'página de texto' nas imagens resultantes do meu Studies in Polyhedra. Dadas duas máscaras de imagem em escala de cinza, multiply também é uma boa maneira de apagar partes de uma imagem para preto, com base em alguma máscara. Ele faz isso de forma linear, então a máscara pode ser uma imagem em escala de cinza, em vez de uma imagem puramente booleana de liga/desliga. Veja Composição Matemática. Multiplicar uma imagem por ela mesma é, na verdade, uma técnica útil para produzir um escurecimento quadrático de uma imagem, de modo que as cores brilhantes permaneçam proeminentes, mas as outras cores fiquem mais escuras. Na verdade, isso é equivalente a um operador Gamma com um valor de "0.5", ou a uma operação Evaluate PowerOf com um valor de "2.0". Para um exemplo, veja um Gerador de Estrelas, que produz uma distribuição mais realista das intensidades das estrelas. Ou pode ser usado em imagens de nuvens de satélite antes de sobrepor o resultado sobre um mapa geográfico. [IM Output]

Screen (tornar o preto transparente para diagramas/texto)

Este é quase exatamente igual a '[Multiply](#multiply)', exceto que ambas as imagens de entrada são invertidas antes da composição, e o resultado final também é então invertido novamente para retornar a imagem ao normal. Em termos técnicos, os dois métodos são 'Duais' um do outro. Isso faz com que sua fórmula seja: 1-(1-_Src_)*(1-_Dest_) Isso significa que, se uma das imagens for preto puro, o resultado será a outra imagem. Por outro lado, se uma imagem for branca, o resultado será branco. Entre esses extremos, uma imagem clareará a imagem de destino pela quantidade dada. Note que uma composição 'Screen' só tornará uma imagem mais clara, nunca mais escura. Este é um estilo de composição conhecido como composição 'Dodge'. (Veja Métodos de Composição de Iluminação abaixo) Este método de composição é perfeito para sobrepor texto branco sobre um fundo preto, e depois sobre outras imagens... |

  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]
Veja Mascaramento Matemático para um exemplo do uso disto para sobrepor uma forma branca sobre uma imagem. [IM Output]

Bumpmap (multiplicação em escala de cinza)

O método '[Bumpmap](#bumpmap)' é essencialmente o mesmo que '[Multiply](#multiply)', exceto que a imagem de origem é convertida para escala de cinza antes de ser sobreposta. Em outras palavras, ele escurecerá a imagem em qualquer lugar onde a imagem de origem for escura. Você poderia pensar nisso como um operador do tipo 'multiplicar pela intensidade'. Por exemplo... |

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

[IM Output]
Observe como a imagem "hand_point.gif" é convertida para escala de cinza antes de ser aplicada. Seu propósito original é adicionar textura (como uma textura de papel ou tecido) às imagens. No entanto, como ele só pode escurecer imagens, não é tão útil quanto o método '[HardLight](#hardlight)', que pode tanto clarear quanto escurecer imagens (veja abaixo). [IM Output]

Divide, Divide_Dst, Divide_Src ( ) (removendo efeitos de sombreamento)

As duas imagens são divididas uma pela outra. Qual imagem divide qual depende de se 'Divide_Src' ou 'Divide_Dst' é aplicado. A fórmula para 'Divide_Dst' é _Src_ / _Dest_ e para 'Divide_Src' é _Dest_ / _Src_ Devido à ordem das imagens normalmente definida na composição de imagens, e ao comando "magick composite", o método original 'Divide' significava...

**{_Source_} Divide {_background_}**


****

Ou seja, o nome do método original 'Divide' é um sinônimo de "Divide_Dst", significando "dividir pelo destino". É também o operador usado para definir o gráfico de gradiente exibido. Note que a ordem das imagens é muito importante, pois você obtém resultados muito diferentes se as imagens, ou o operador, forem trocados. Esse é especialmente o caso do comando "magick", que tem a imagem de destino antes da imagem de origem. Lembre-se de que é a imagem de destino que definirá o tamanho final de fato, e os metadados na composição resultante das duas imagens. Lembre-se também de que é a imagem de origem que é posicionada em relação à imagem de destino. Este método de composição é de maior utilidade prática na Remoção de Vinheta de Fotografias. No próximo exemplo, eu o usarei como meio de remoção de fundo.
Como valores de cor normalizados são usados, e estes normalmente variam de 0.0 (preto) a 1.0 (branco), a divisão de fato clareará a imagem do numerador, pela quantidade de 'preto' que aparece dentro da imagem pela qual você está 'dividindo'. Agora, dividir imagens de modo que a imagem do 'numerador' (aquela não especificada pelo operador) seja clareada pode soar estranho. Trata-se, porém, de uma operação muito útil. Ela significa que você pode efetivamente remover manchas escuras de uma imagem, causadas por vinheta da lente, digitalização ruim, ou tonalidade causada pela idade. Por exemplo, tenho uma imagem de texto manuscrito que foi digitalizada de forma bem grosseira (usando uma câmera digital sem flash, e depois reduzida de tamanho para remover o ruído digital). O papel tem bordas desbotadas e, como o flash não foi usado, o fundo está muito escuro e apresenta efeitos de sombreamento, porque o papel não estava completamente plano.

[IM Output]

Apenas normalizar a imagem para realçar seu contraste não ajuda a remover a coloração das bordas ou outros efeitos de sombreamento.

  magick text_scan.png -normalize text_scan_norm.png

[IM Output]

No entanto, ao desfocar a imagem para remover as linhas, e depois dividir isso a partir da original, removemos efetivamente todos os efeitos grosseiros de sombreamento da imagem.

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

[IM Output]

O resultado da divisão é que a cor de fundo é convertida para branco, enquanto as linhas finas do texto permanecem nítidas, ainda que um pouco mais 'finas'. Como você pode ver, é muito mais nítido do que apenas normalizá-la, embora parte do anti-aliasing também tenha sido removida. Alguns ajustes extras poderiam ter sido feitos na imagem divisora, mas o resultado é muito próximo do esperado. Usar desfoques menores pode produzir um meio alternativo de gerar imagens de contorno artísticas, como mostrado em Colorindo Imagens de Contorno. Este operador poderia ser combinado com um gerador de gradiente de fundo, como Gradientes de Cor Esparsa, para gerar imagens 'divisoras' de fundo melhores do que apenas desfocar a imagem inteira.
Os operadores de divisão são, na verdade, semelhantes ao método de composição '[Color_Dodge](#colordodge)', mas com a imagem divisora invertida e usada como imagem de origem. Essa é a composição normalmente usada no Photoshop, embora possa exigir que você Troque e Inverta as imagens. Veja '[Color_Dodge](#colordodge)' para equivalências. | Antes do IM v6.6.8-5, apenas o método '[Divide](#divide)' original era fornecido (equivalente ao mais novo '[Divide_Dst](#dividedst)').
---|---
[IM Output]

Plus ( ) (Somar cores para formar uma mescla)

Soma as cores da sobreposição ao fundo. Essencialmente, fazendo com que as duas imagens se mesclem igualmente. Sua fórmula é, naturalmente: _Src_ + _Dest_ Note, porém, que se as cores somadas ultrapassarem os limites de cor, a cor será cortada pelos limites normais da faixa de cores. É por isso que metade da imagem no gradiente resultante é branco puro, pois esses valores foram cortados em seu valor máximo. Recomenda-se cautela para garantir que a imagem resultante não seja cortada, se isso não for desejado. O operador tem vários usos importantes. Mesclar imagens que contêm cores de canais separados, mas onde apenas o canal individual tem cor. Por exemplo...

  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]

| Devido à conformidade do IM com o padrão SVG, 'green' não é uma cor verde verdadeira (como é nos nomes de cores do X11), mas um verde escuro ou de meio brilho. Um verde RGB verdadeiro pode ser especificado com a cor 'lime', como fizemos no exemplo acima.
---|---
Ele também é usado como operador matemático para somar imagens de gradiente separadas. Por exemplo, ao calcular Imagens de Diferença 'manhattan', ou em Matemática de Gradientes. '[Plus](#plus)' às vezes é usado para adicionar texto branco a uma imagem. Esse NÃO é o uso correto, e pode resultar em algumas inconsistências de anti-aliasing. A melhor maneira é usar o método de composição '[Screen](#screen)'. Ele usa uma multiplicação em vez de um método aditivo para aumentar o brilho. O Método de Composição Linear Dodge é equivalente a '[Plus](#plus)', mas usando a mesclagem alfa '[Over](#over)' mais comum.

Plus e Mesclagem Plus

O que torna o '[Plus](#plus)' mais importante é que ele é praticamente o único operador matemático que implementa uma função de mesclagem diferente da mesclagem '[Over](#over)'. Ele não só 'soma' as cores, mas também 'soma' os valores do canal alfa, e é praticamente o único operador que faz isso por padrão. Isso é importante, pois permite a junção correta de imagens mascaradas complementares. Por exemplo, veja a mesclagem das imagens Dst In e Out. Ele também permite que você use transparência para gerar uma média ponderada, ou Blend, de duas imagens. Se não fosse por este método especial de mesclagem do '[Plus](#plus)', essas técnicas especiais de tratamento de transparência normalmente não seriam possíveis.
A partir do IM v6.6.1-6, a capacidade de usar o operador matemático nos canais alfa foi adicionada a todos os Métodos de Composição Matemáticos, simplesmente removendo a flag 'Sync' padrão da configuração "[-channel](https://imagemagick.org/command-line-options/#channel)" (basta especificar os canais específicos aos quais você quer aplicá-lo). Veja Matemática de Canais de Imagem usando Composição de Imagem abaixo. Isso significa que o operador '[Plus](#plus)' é o único operador dos Métodos de Composição Matemáticos não afetado por este recurso, pois ele já é aplicado por padrão.
[IM Output]

Minus, Minus_Dst, Minus_Src ( )

O resultado é uma imagem subtraída da outra. Qual imagem é subtraída da outra depende de se 'Minus_Src' ou 'Minus_Dst' é aplicado. Especificamente, 'Minus_Dst' significa 'subtrair o destino', ou, se aplicado em um comando "magick composite".... A fórmula para.. 'Minus_Dst' é _Src_ - _Dest_ e para 'Minus_Src' é _Dest_ - _Src_ Devido à ordem das imagens normalmente definida na composição de imagens, e ao comando "magick composite", o método original 'Minus' significava...

**{_Source_} Minus {_background_}**


****

Ou seja, o nome do método original 'Minus' é um sinônimo de "Minus_Dst", significando "menos o destino". É também o operador usado para definir o gráfico de gradiente exibido. Por exemplo, subtraia um círculo do resultado final da operação '[Plus](#plus)' anterior, acima. |

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

[IM Output]
Observe a forma como o canal alfa é tratado, que é a mesma de todos os outros operadores matemáticos, exceto '[Plus](#plus)'. Veja Composição Matemática e Mesclagem Alfa. Esse tratamento pode ser modificado pelo uso de uma flag de canal 'Sync' especial. Veja Matemática de Canais de Imagem abaixo para detalhes. O método de composição '[Linear Burn](#linearburn)' também pode ser usado para a subtração de cores, mas funciona com o usuário invertendo a imagem a ser subtraída. Veja o Método de Composição Linear Burn para mais detalhes. | Antes do IM v6.6.8-5, apenas o método '[Minus](#minus)' original era fornecido (equivalente ao mais novo '[Minus_Dst](#minusdst)').
---|---
[IM Output]

ModulusAdd

O '[ModulusAdd](#modulus_add)' é muito parecido com o '[Plus](#plus)', exceto que, quando o resultado excede o branco, ele é envolvido (módulo) de volta ao preto. Por exemplo, se somarmos dois gradientes em escala de cinza, as cores mais brilhantes serão envolvidas para formar um segundo gradiente. |

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

[IM Output]
Este tipo de composição por módulo pode ser usado para produzir alguns gradientes muito interessantes, tais como. |

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

[IM Output]
E múltiplas adições por módulo podem criar gradientes repetidos do tipo persiana veneziana. |

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

[IM Output]
O que produz um gradiente repetido 5 vezes. Observe como uso um fundo de 'gray50' para efetivamente 'rolar' o gradiente meio ciclo de módulo para a frente. [IM Output]

ModulusSubtract

O operador '[ModulusSubtract](#modulus_subtract)' é o mesmo que '[Minus](#minus)', exceto que é uma subtração por módulo. Subtrair 'branco' de 'cinza' resultará no 'cinza' original, e não em preto, pois os valores são envolvidos de volta. Um efeito colateral da subtração por módulo é que algumas partes podem ficar brancas em vez de pretas, de maneiras aparentemente descontroladas. |

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

[IM Output]
Fazer um '[ModulusAdd](#modulus_add)' com uma Imagem Invertida produzirá o mesmo resultado. [IM Output]

Difference (comparação de imagem, e inversão seletiva)

A imagem resultante é a diferença absoluta nos valores de cor. Sua fórmula é: abs(_Src_ - _Dest_) A diferença entre 'black' e 'white' produzirá um resultado máximo de branco, enquanto quaisquer cores iguais produzirão preto. Basicamente, uma forma simples de comparação de imagens. O uso mais comum deste método de composição é comparar duas imagens do mesmo tamanho para ver como elas diferem, e até produzir uma porcentagem dessa diferença. Este operador é normalmente usado para gerar Imagens de Diferença para Comparação. O operador também pode ser usado para inverter seletivamente uma imagem. Sobrepor preto não tem efeito sobre o fundo, enquanto sobrepor branco inverte as cores da imagem naquele local. Em outras palavras, este operador (assim como o próximo) fornece um operador de Inversão mapeado por imagem. Por exemplo, vamos inverter metade da imagem 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 (diferença de imagem excluindo os cinzas)

Sua fórmula é: _Src_ + _Dest_ - 2*_Src_ *_Dest_ Esta é uma espécie de diferença calculada como média. Branco sobre branco produzirá preto (nenhuma diferença), o mesmo com preto sobre preto. No entanto, cinza sobre cinza produzirá um resultado cinza. Branco e preto, naturalmente, ainda produzem branco (diferença máxima). Outra forma de encarar isto é que regiões claras da imagem causam a inversão da respectiva outra camada. Regiões muito escuras não mudam nada. Dessa maneira, o método Exclusion é igual a '[Difference](#difference)' (veja o anterior). Um uso deste operador é multiplicar 'gradientes com viés', como os usados em Mapas de Deslocamento. Estes são gradientes em que um valor de 50% de cinza é considerado 'zero', com cores mais escuras representando um valor 'negativo', e cores mais claras representando um valor 'positivo', com os valores variando de -1 a +1. Veja Multiplicar Gradientes com Viés, para detalhes. Outro uso deste método de composição, enviado por Joe Fry, é uma maneira de mesclar múltiplas imagens de diferença. A imagem final mostra as mudanças de todas as imagens, não apenas entre duas imagens. Ou seja, dadas as imagens A, B e C, primeiro gere as imagens de diferença para A, B e B, C, e depois use exclusion sobre esses resultados, de modo a obter uma imagem mostrando como as três imagens mudaram. Este método também está intimamente relacionado a como o operador de mesclagem de composição Xor trata os valores de transparência alfa. [IM Output] [IM Output]

Lighten and Darken (selecionar o valor máximo/mínimo)

Compara os valores de cor das imagens de origem e destino e toma o respectivo valor mais claro ou mais escuro. A fórmula para Lighten é: If _Src_ > _Dest_ then _Src_
else _Dest_
Para o mais escuro, basta inverter a comparação.

Um uso de '[Lighten](#lighten)' é compor uma versão desfocada da imagem original, de modo que os 'realces' da imagem original ganhem um brilho suave ao seu redor.

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

[IM Output] [IM Output]

Veja Desfoque Suave para uma maneira melhor (usando uma 'técnica de desfoque mesclado') de obter um resultado semelhante.
Esses operadores funcionam comparando e selecionando os valores individuais dos canais RGB e, por isso, podem resultar em alguma distorção de cor, especialmente ao lidar com as cores primárias da imagem. Por exemplo, aqui criei uma imagem de gradiente vermelho e azul, e depois uso lighten para compô-las.

  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 o canal azul é zero na imagem de gradiente vermelho, e vice-versa, e a composição '[Lighten](#lighten)' funciona por valores de cor, o resultado é apenas uma simples mesclagem das imagens vermelha e azul, produzindo uma imagem de gradiente vermelho-azul. Ou seja, o acima foi equivalente a uma simples Composição por Cópia de Canal. Um método para evitar distorções de cor é restringir o operador a ajustar apenas o canal de 'Luminosidade' da imagem usando o Espaço de Cor HSL. Embora isso nem sempre produza bons resultados. | _Note que "Gimp", "Photoshop", "PhotoLine" e "Paint Shop Pro" comparam os canais diretamente, exatamente como o IM.

O "Photo-Paint" compara as imagens pela intensidade de cor e usa isso para decidir de qual imagem selecionar as cores, preservando assim a integridade das cores. Veja Método Lighten-Intensity abaixo.

Por outro lado, "Picture Publisher" e "PhotoImpact" usam a luminosidade da cor (conforme definida pelo espaço de cor HSL) para a comparação.

Para comparações da diferença em escala de cinza a partir de vários espaços de cor, veja o exemplo Conversão para Escala de Cinza usando Espaço de Cor.

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

Lighten-Intensity and Darken-Intensity (selecionar a cor pela intensidade)

A partir do IM v6.6.9-5, foi adicionada uma variante 'Lighten_Intensity' e 'Darken_Intensity'. Ela comparará a intensidade dos pixels nas duas imagens e depois selecionará os valores dos pixels com base nesse resultado. Isso significa que nenhuma cor nova será adicionada às imagens, embora a nova imagem seja uma mistura das cores de ambas. Além disso, a ordem das imagens não importa, exceto que o tamanho e os metadados vêm da imagem de destino. Por exemplo, aqui tomamos a mais clara de imagens contendo um gradiente Vermelho e Azul.

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

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

Como você pode ver, o pixel inteiro foi selecionado da imagem selecionada. Você não terá nenhuma mistura dos canais de cor. No entanto, como a intensidade do azul é considerada mais escura que a do vermelho, apenas os vermelhos mais escuros são substituídos pela imagem de gradiente azul mais escura. Este método de composição não é definido peloguia de composição SVG (2009) usado por todos os métodos de composição anteriores que examinamos até aqui. Por isso, não há uma definição real de como o canal alfa deveria afetar a comparação de pixels.

Com relação ao alfa, o método tem dois modos de operação. Com a flag 'Sync' especial da configuração "[-channel](https://imagemagick.org/command-line-options/#channel)" ativada (o padrão), a comparação será baseada na intensidade das cores, ponderada pelo canal alfa (transparência). Isso significa que um 'Branco Semitransparente' terá uma intensidade ponderada aproximadamente igual à de uma cor 'Cinza Médio Opaco'.

Isso significa que, sendo todo o resto igual, um '[Lighten_Intensity](#lighten_intensity)' criará uma 'união' das imagens com forma, enquanto '[Darken_Intensity](#darken_intensity)' criará uma 'interseção' de imagens com forma (pelo menos as não pretas). Isso NÃO é ideal, e pode mudar, mas é melhor do que nenhuma entrada de alfa.

O segundo modo de operação será usado se você desligar a flag de canal 'Sync' (veja Usando a Flag 'Sync' abaixo). Por exemplo, usando "-channel All". A seleção de pixels será então baseada puramente na intensidade da cor, sem nenhum efeito de ponderação alfa. No entanto, o valor do canal alfa será copiado junto com os dados do pixel que foi de fato selecionado. Para imagens sem transparência, o resultado será o mesmo independentemente do modo. Este segundo modo também permite que você use um "[-channel](https://imagemagick.org/command-line-options/#channel)" mais restrito, definindo quais canais podem ser copiados da origem para a imagem de destino, se selecionados. A seleção, porém, ainda será baseada puramente na intensidade de cor não ponderada. Isso significa que você pode criar mais facilmente uma 'máscara de forma' da seleção, com base na intensidade das cores nas duas imagens. Você compara as imagens com base na intensidade de cor, mas só se importa com o valor do canal alfa no resultado. Para criar uma 'máscara', você tornaria uma imagem totalmente transparente (mas ainda com cor), usando Alpha Transparent, e a outra imagem totalmente opaca (o padrão). No final, você pode usar Alpha Extract para obter a máscara de qual imagem tinha a cor mais clara naquela posição de pixel. |

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

[IM Output]
Note que os valores alfa nas duas imagens não precisam ser apenas 'ligado' e 'desligado', mas podem ser definidos com algum valor de 'referência'. Isso significa que você poderia ter uma sequência inteira de imagens, cada uma com um valor de canal alfa diferente. Você pode então usar este método de composição para comparar todas as imagens juntas, e obter um mapa de qual imagem continha o pixel mais claro (ou mais escuro) em cada local da imagem. Em outras palavras, os métodos de composição por intensidade podem ser usados como uma espécie de operador de 'seleção', ou 'comparação', para uma longa lista de imagens. | Adicionado a partir do IM v6.6.9-5. Mas nenhuma definição formal para o método foi encontrada. Por isso, a implementação atual é classificada comoaltamente experimental, e pode mudar com base em sugestões dos usuários. No entanto, a ideia essencial é sólida.
---|---

Alternativa de Intensidade para versões mais antigas do IM

Se o método '[Lighten_Intensity](#lighten_intensity)' não estiver disponível na sua versão do ImageMagick, você pode recriar uma versão pura, apenas de cor, usando '[Lighten](#lighten)' em cópias em escala de cinza das duas imagens, e, comparando o resultado com a cópia em escala de cinza, criar uma máscara de seleção para aplicar sobre a original. Isso não é fácil, e o que segue é uma dessas soluções... |

  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]
É um trecho de processamento bastante horrível, mas, como você pode ver, funciona. Para obter uma versão '[Darken_Intensity](#darken_intensity)', substitua o "-delete 1" por "-delete 0", OU substitua "-compose Lighten" por "-compose Darken". Qualquer um funcionará.

Operações Equivalentes da Teoria de Conjuntos

Vários dos métodos matemáticos acima também são usados para realizar operações de teoria de conjuntos ou booleanas com formas. O método de composição '[Lighten](#lighten)' pode ser usado para encontrar a 'União' (o 'Ou' booleano) de dois (ou mais) grupos (conjuntos) de pixels.

  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]

O método de composição '[Darken](#darken)' produz uma 'Interseção' (o 'E' booleano) dos pixels.

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

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

O método de composição '[Difference](#difference)' produz um 'OU Exclusivo' (o 'XOR' booleano) dos dois conjuntos.

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

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

Um método '[Exclusion](#exclusion)' também poderia ter sido usado para esse fim, embora trate os valores em escala de cinza (não booleanos) de forma diferente. Ele é, no entanto, o método usado para a mesclagem alfa Duff-Porter '[XOR](#xor)'. E, por fim, '[Minus](#minus)' pode ser usado para gerar o 'Complemento Relativo' de dois conjuntos de pixels.

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

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

Note que um "[-clamp](https://imagemagick.org/command-line-options/#clamp)" pode ser necessário para versões HDRI do ImageMagick ao aplicar qualquer um dos métodos de composição de 'conjunto' ou 'booleanos' acima, para evitar a geração de valores fora da faixa.

Composição Matemática e Mesclagem Alfa

Você pode usar os métodos de composição matemática acima para realizar operações matemáticas em imagens. No entanto, há uma grande ressalva quanto a isso. Provavelmente não funcionará como você desejaria com imagens que contêm transparência. Por padrão, quase todas as composições matemáticas acima seguem uma convenção definida pela especificação SVG. guia de composição SVG (2009). Isso significa que, se você tentar usar composições matemáticas em imagens com um canal alfa (ou seja, alguma forma de transparência), talvez você não obtenha uma verdadeira composição matemática, mas uma forma 'mesclada' de composição. Por exemplo, aqui crio imagens de gradiente com alguma transparência ao redor delas. Depois as '[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]
Source | | [IM Output]
Dest | | [IM Output]
Result
---|---|---|---|---

Note que as partes das imagens que não se sobrepuseram foram simplesmente incluídas na imagem resultante, como estão, sem modificação. Ou seja, as imagens foram 'mescladas'. Pior ainda, se a imagem contiver transparências parciais, os valores de cor serão 'ponderados' pelo canal alfa. Isso é útil para uma Composição Plus, fornecendo uma 'adição ponderada de cores' ou Operação de Mesclagem, mas até agora não consegui descobrir nenhum uso para uma 'multiplicação ponderada de cores' em imagens. Alguém? Se você está fazendo matemática de imagens, esse comportamento geralmente não é desejável. Embora, ao fazer tal matemática, você geralmente também não tenha nenhum canal alfa, de modo que os problemas de 'mesclagem alfa' e 'cor ponderada' raramente surgem. | _AComposição Plus é o único Método de Composição Matemático que não faz 'mesclagem alfa over'. Em vez disso, conforme a Especificação SVG, ele soma cada canal separadamente. No entanto, os canais de cor ainda são ponderados pelo valor alfa antes de serem somados; apenas o tratamento dos valores alfa (a mesclagem) difere.

Isso é importante para fornecer a 'adição' correta de formas mascaradas, como demonstrado na Composição DstOut._
---|---

Matemática de Canais de Imagem usando Composição de Imagem

Se as imagens sobre as quais você está usando um Método de Composição Matemático forem simplesmente imagens em escala de cinza totalmente opacas, então você pode usar os métodos acima diretamente sobre elas, sem nenhum problema. No entanto, por padrão, os métodos de composição serão aplicados a todos os canais de cor, com mesclagem alfa, exatamente como você viu acima. Isso torna difícil aplicá-los apenas a um canal específico, como o canal alfa. Por exemplo, aqui '[Multiply](#multiply)' duas imagens pretas contendo um gradiente transparente. Usando a configuração "[-channel](https://imagemagick.org/command-line-options/#channel)" padrão.

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

[IM Output]
Source | | [IM Output]
Dest | | [IM Output]
Result
---|---|---|---|---

Note que multiplicar 'Black' com 'Black' é 'Black', então a cor não muda neste exemplo. Apenas a transparência resultante é modificada. No entanto, o resultado definitivamente não é uma multiplicação dos valores do canal alfa das imagens, pois, pela Definição SVG, as semitransparências são mescladas usando o método 'over'. Isso é matematicamente equivalente a uma composição '[Screen](#screen)' do canal alfa, e não a uma multiplicação.

Flag do Canal Sync e Composição Matemática

A partir do IM v6.6.1-6, os Métodos de Composição Matemáticos foram modificados para obedecer à flag 'Sync' da configuração "[-channel](https://imagemagick.org/command-line-options/#channel)". Essa flag significa, na prática, "sincronizar as operações dos canais de cor e alfa". A configuração "[-channel](https://imagemagick.org/command-line-options/#channel)" padrão é 'RGBK,Sync'. Então, por padrão, os canais de Cor e Alfa são tratados de forma apropriada, 'em sincronia', conforme a especificação SVN. No entanto, ao remover a flag 'Sync', os Métodos de Composição Matemáticos tornam-se 'operadores de canal', aplicando a função matemática a cada canal separadamente. |

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

[IM Output]
E esta é uma multiplicação correta do canal alfa.
Tudo isso se aplica apenas aos Métodos de Composição Matemáticos (como detalhado acima), bem como ao método de composição '[Mathematics](#mathematics)' especial (veja abaixo). Não se aplica a outros métodos de composição, como os Métodos de Composição de Iluminação (veja a seguir). Pelo menos ainda não. A flag 'Sync' também afeta como o Método de Composição Lighten/Darken por Intensidade (não é um método de composição definido pelo SVG) lida com o canal alfa (acima). Para mais informações sobre o uso da matemática de imagens, veja Matemática em Gradientes. Mais especificamente, esses exemplos examinam o uso de composições matemáticas para gerar Imagens de Gradiente com Viés, o que é um pouco mais elaborado.


Métodos de Composição de Iluminação -- Light, Dodge, Burn

Esses métodos modificam as cores de uma imagem de maneiras altamente complexas, e são normalmente usados para ajustar o sombreado ou a intensidade da imagem, tornando algumas áreas mais claras e outras mais escuras.

Os métodos de Composição de Iluminação dividem-se em três subcategorias de operadores relacionados.
'Burn', que geralmente escurece as imagens.
'Dodge', que geralmente clareia as imagens.
'Light', que tanto escurece quanto clareia as imagens, com base na escuridão e no brilho de uma das imagens.

'[Multiply](#multiply)' (escurece as cores) é geralmente considerado uma operação de composição 'Burn' pura, enquanto '[Screen](#screen)' (clareia) é um operador de composição 'Dodge'. Geralmente, uma das imagens consiste em um padrão de cores ou foto, enquanto a outra é uma imagem em escala de cinza usada para clarear ou escurecer a imagem adequadamente. Qual imagem deve ser a colorida, e qual a de escala de cinza, é discutível e depende de como o método foi implementado. Não há um padrão a esse respeito, então cautela e experimentação são recomendadas. Como consequência da falta de padrões para esses operadores, muitos usuários não os entendem ou os usam de forma incorreta. Também ainda não encontrei nenhum guia sobre o uso correto desses métodos de composição, sendo ele praticamente inexistente, então tive que fazer o meu melhor com os exemplos abaixo. [IM Output]

Overlay (adicionar cor a um objeto em escala de cinza)

Este método de composição é muito incomum, pois foi projetado para '[Multiply](#multiply)' (escurecer) e '[Screen](#screen)' (clarear) uma imagem ao mesmo tempo. Qual método é aplicado a um pixel específico é selecionado pelo valor da imagem de destino, que pode ser considerada a 'máscara de iluminação'. Por causa disso, o destino é geralmente uma imagem em escala de cinza, à qual a cor está sendo adicionada. Sua fórmula é: If _Dest_ <= 0.5 then 2*_Src_ *_Dest_
else 1-2*(1-_Src_)*(1-_Dest_)
O resultado é um método de composição especial que preserva qualquer branco e preto puros (realces) presentes na imagem de destino, enquanto tinge os cinzas de meio-tom dessa imagem com as cores encontradas na imagem de sobreposição. Ou seja, dada uma imagem em escala de cinza como destino, este operador colorirá esse fundo usando a imagem de origem, preservando quaisquer efeitos de sombra e realce presentes no 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]
Dest | | [IM Output]
Overlay | | [IM Output]
Result
---|---|---|---|---

Como você pode ver, os cinzas de meio-tom da imagem de gradiente foram coloridos com as cores da imagem fornecida. E este é o uso normal do método de composição: adicionar cor a uma máscara de iluminação em escala de cinza. Este método, ao contrário de '[Multiply](#multiply)' ou '[Screen](#screen)', não é associativo.

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

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Result
---|---|---|---|---

Essa 'sobreposição de cor' em uma imagem de realces cinzas torna este método perfeito para adicionar cor à saída do operador "[-shade](https://imagemagick.org/command-line-options/#shade)". No entanto, você precisa ter muito cuidado ao gerar um cinza de meio-tom perfeito a partir desse operador, para obter a coloração correta em áreas sem quaisquer realces. Veja Realces por Sobreposição com Shade para detalhes. Por exemplo, dado um círculo, podemos sombreá-lo para produzir efeitos tridimensionais e depois tingir o resultado com a imagem original para restaurar as cores originais.

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

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Result
---|---|---|---|---

Para um exemplo mais prático do uso do método '[Overlay](#overlay)', veja a imagem "levels_3d" na página Exemplos do Gerador de Fundos. O maior problema com este método de composição é que qualquer transparência em qualquer uma das imagens não será preservada. Ou seja, o que estiver visível em qualquer uma das imagens ficará visível no resultado. Normalmente, este operador é usado em imagens que não contêm transparência; isso geralmente significa que você pode precisar dar alguns passos extras para restaurar a transparência da imagem de destino ou fundo. Uma maneira simples de preservar a transparência é simplesmente Desligar o Canal Alfa da imagem de destino, tornando-o assim inacessível. Quando a composição estiver completa, você pode simplesmente Ligá-lo Novamente. Um exemplo disso é dado em Imagens de Forma Sombreada. Outro método é salvar uma 'máscara', ou uma cópia da imagem original, e depois usar essa máscara ou imagem para restaurar a transparência. Exemplos de como fazer isso são fornecidos em Tingimento de Cor por Overlay. Ou no exemplo mais complexo Melhor Geração de Logotipos 3-D. Até a versão 6.1.6 do IM, o método de composição 'Overlay' estava quebrado, no sentido de que produzia apenas resultados puramente pretos ou brancos (muito provavelmente você obteria apenas um resultado preto puro). Consequentemente, a maioria dos usuários do IM tinha pouca chance de entender este operador. Agora que isso foi corrigido, os usuários poderão fazer bom uso deste método.
[IM Output]

Hard_Light (adicionar textura ou realce/sombra a uma imagem)

Este é o mesmo que '[Overlay](#overlay)', exceto que as imagens de origem e destino são trocadas. Se você comparar as imagens de gradiente desses dois operadores, poderá ver que o gradiente é transposto diagonalmente, mostrando a troca das entradas de origem e destino. Sua fórmula é: If _Src_ <= 0.5 then 2*_Src_ *_Dest_
else 1-2*(1-_Src_)*(1-_Dest_)
Então, enquanto '[Overlay](#overlay)' pode adicionar cor a um objeto sombreado em escala de cinza, '[Hard_Light](#hardlight)' adiciona efeitos de iluminação em escala de cinza a uma imagem. Qual método você usa depende de como você está pensando em termos de adicionar efeitos de iluminação à imagem. A diferença importante é qual imagem é a imagem de 'destino', de modo a preservar os metadados da imagem, ou até mesmo Desativar o Canal Alfa temporariamente para preservá-lo durante a operação. Por exemplo, aqui gero um 'efeito de iluminação' usando uma operação "[-raise](https://imagemagick.org/command-line-options/#raise)" desfocada de uma imagem cinza pura do mesmo tamanho da original. Isso é então composto usando '[Hard_Light](#hardlight)' para adicionar esses efeitos de iluminação à imagem.
  magick rose: -fill gray50 -colorize 100% \
          -raise 4 -normalize -blur 0x4  lighting_effect.png
  magick rose: lighting_effect.png \
          -compose hardlight -composite  compose_hardlight.png

[IM Output]
Dest | | [IM Output]
Overlay | | [IM Output]
Result
---|---|---|---|---

Este método facilita a adição tanto de realces (como uma luz refletida) quanto de efeitos de sombra escura a uma imagem existente, usando uma única operação. Aqui está um exemplo de adição direta de 'textura' de iluminação a uma imagem. |

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

[IM Output]
Observe como a textura resultante é forte, quase encobrindo a imagem original com áreas claras e escuras. Essa é a desvantagem de usar '[Hard_Light](#hardlight)'. Para combater isso, você pode querer atenuar o contraste de uma textura sobreposta. |

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

[IM Output]
Outros métodos de composição de iluminação, como '[Soft_Light](#softlight)', também podem produzir melhores resultados de forma mais direta. Para um exemplo melhor, veja Sobrepondo uma Textura no Livro de Receitas de Fotos. Um exemplo da vida real usando o sombreamento '[Hard_Light](#hardlight)' é fornecido em um Fórum de Discussão do IM sobre a geração de capas de DVD 3D a partir de imagens de origem planas. Lembre-se de que tanto o sombreamento '[Overlay](#overlay)' quanto o '[Hard_Light](#hardlight)' são essencialmente o mesmo método de composição. A única diferença é a ordem das imagens. [IM Output]

Soft_Light (realce mais suave de uma imagem)

O método de composição 'Soft_Light' também adicionará realces e sombras a uma imagem colorida existente. No entanto, as cores da imagem de destino são modificadas para produzir um contraste mais suave e um gradiente mais liso nos efeitos de iluminação. Se você olhar com atenção a 'imagem de mapa em escala de cinza' (veja à direita), não verá nenhuma descontinuidade abrupta, embora na verdade existam duas delas. (Veja também '[Pegtop_Light](#pegtoplight)' a seguir). Ele está mais intimamente relacionado à composição '[Overlay](#overlay)' do que a '[Hard_Light](#hardlight)', então o destino é normalmente a máscara de iluminação em escala de cinza. Se isso é intencional ou não é desconhecido, mas de fato o torna diferente de '[Hard_Light](#hardlight)', o que significa que é melhor compor a imagem principal sobre a imagem de sombreamento, em vez do contrário. :-( | _AVISO: Este efeito de iluminação é definido mais como '[Overlay](#overlay)' do que como '[Hardlight](#hardlight)'. No entanto, qual delas deve conter a imagem de iluminação em escala de cinza não está claro. Usar a origem pode produzir resultados totalmente pretos e brancos; usar o destino, no entanto, não pode produzir esses extremos.

Se alguém tiver alguma referência definitiva, por favor me avise._
---|---
Por exemplo, aqui está o mapeamento de textura 'Soft_Light'. |

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

[IM Output]
Como você pode ver, mesmo com uma imagem "granite:" normalizada, as mudanças de cor são mais suaves e menos intensas do que as de '[Hard_Light](#hardlight)', ou mesmo '[Overlay](#overlay)'. No entanto, você também nunca obterá nenhuma sombra preto puro ou realce branco puro adicionados à imagem resultante. Basicamente, '[Soft_Light](#softlight)' tem um efeito de textura mais suave, que preserva a coloração original da imagem source. Aqui mostro as mudanças de cor obtidas como resultado do uso de sobreposições de cor preto puro, branco e um cinza perfeito. |

  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]
Se você tivesse feito isso com '[Hard_Light](#hardlight)', as laterais da imagem seriam preto puro e branco puro, em vez de apenas um escurecimento ou clareamento de 50%. | _Antes do IM v6.5.4-3, '[Soft_Light](#softlight)' não funcionava como esperado, produzindo um clareamento para qualquer sobreposição de imagem de tom não cinza. Na verdade, confirmei que ele estava implementado corretamente de acordo com a especificação SVG oficial de 2004.

Infelizmente, era a especificação, não a implementação, que estava incorreta. Isso foi corrigido na especificação SVG de março de 2009. Assim, para o IM v6.5.4-3 e posteriores, este operador agora funciona como você esperaria que um operador de sombreamento de luz funcionasse._
---|---
[IM Output]

Pegtop_Light (uma variação mais suave do soft light)

Embora '[Soft_Light](#softlight)' seja muito mais suave do que '[Hard_Light](#softlight)' ou '[Overlay](#overlay)', ele ainda é, na verdade, baseado em duas funções separadas unidas. O método 'Pegtop_Light' produz um resultado quase idêntico ao de '[Soft_Light](#softlight)', mas usa uma única função suave sem nenhuma descontinuidade, nem mesmo as duas menores usadas por '[Soft_Light](#softlight)'. Por causa disso, ele é, na verdade, muito mais simples e rápido. Sua fórmula é: 2*_Src_ *_Dest_ + _Src_ 2*(1 - 2*_Dest_) Para detalhes, veja a página Pegtop SoftLight Alternative. AVISO: Este efeito de iluminação é definido mais como '[Overlay](#overlay)' do que como '[Hard Light](#hardlight)'.
O método de composição '[Pegtop_Light](#pegtoplight)' foi adicionado à versão 6.5.4-3 do IM.
--- ---
[IM Output]

Linear_Light (Um esquema de sombreamento muito simples, porém forte)

Outro método de sombreamento de imagem que é muito sensível à imagem de sombreamento sobreposta. Ele tem zonas muito maiores de limites de preto e branco puros. Sua fórmula é: 2*_Src_ + _Dest_ - 1 Embora seja uma função contínua, ele poderia realmente ser considerado uma combinação de '[LinearDodge](#lineardodge)' (equivalente a uma composição '[Plus](#plus)') e '[LinearBurn](#linearburn)' (que é um 'plus' deslocado, às vezes usado para subtrair imagens). Antes do IM v6.5.4-3, provou-se que '[Linear_Light](#linearlight)' estava implementado incorretamente.
[IM Output]

Vivid_Light (uma variante do Linear Light)

O método 'Vivid_Light' é o mesmo implementado no Photoshop 7, e é basicamente um pequeno refinamento do método '[Linear_Light](#linearlight)'. O que ele faz é evitar sombrear os extremos, de modo a tornar as cores primárias fortes das imagens mais 'vívidas'. Sua fórmula é: If _Src_ <= 0.5 then 1-(1-_Dest_)/(2*_Src_)
else _Dest_ /(2*(1-_Src_))
Outra forma de encarar isto é uma mistura de '[Color_Dodge](#colorburn)' e '[Color_Burn](#colordodge)', para os extremos, mas '[Linear_Light](#linearlight)' para os meios-tons. O método de composição '[Vivid_Light](#vividlight)' foi adicionado à versão 6.5.4-3 do IM.
--- ---
[IM Output]

Pin_Light

A função 'Pin_Light' foi projetada para preservar melhor os meios-tons da imagem de destino, restringindo seu sombreamento ao sombreamento mais claro e mais escuro da sobreposição. Supostamente, isso simula as mudanças de iluminação duras e nítidas resultantes de uma minúscula fonte de luz do tipo furo de agulha, em vez de uma fonte de luz mais difusa e 'suave'. Sua fórmula é: If _Dest_ < 2*_Src_ -1 then 2*_Src_ - 1
elif _Dest_ > 2*_Src_ then _Dest_
else 2*_Src_
O método de composição '[Pin_Light](#pinlight)' foi adicionado à versão 6.5.4-3 do IM.
--- ---
[IM Output]

Linear_Dodge (Composição 'Add' do Photoshop)

Se você comparar a imagem de gradiente (à direita) de 'Linear Dodge' com a de '[Plus](#plus)', verá que, para duas imagens opacas, elas têm exatamente o mesmo efeito. Sua fórmula é, é claro: Src + Dest Ou seja, para imagens sem transparência, estes dois comandos com as imagens 'A' e 'B produzem a mesma imagem resultante 'R'...

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

O método é equivalente ao modo de composição do Photoshop de mesmo nome. A única diferença real entre os dois métodos está em como eles tratam imagens que contêm cores semitransparentes. Essencialmente, a composição Linear_Dodge usa mesclagem alfa 'Over', enquanto a Composição Plus usa mesclagem alfa 'Plus'. Para detalhes, veja Mesclagem Plus. O método de composição '[Linear_Dodge](#lineardodge)' foi adicionado à versão 6.5.4-3 do IM.
[IM Output]

Linear_Burn (Um método 'Subtract' do Photoshop)

O método de composição 'Linear Burn' é uma composição 'Add Minus One' (somar e subtrair um), que produz o mesmo resultado que se você invertesse todas as imagens de entrada e saída de um método de composição '[Linear Dodge](#lineardodger)' ou '[Plus](#plus)'. Sua fórmula é: _Src_ + _Dest_ - 1 No Photoshop, isso é conhecido não só como 'Linear Burn', mas também como 'Subtract'. Isto é, porque, se você Inverter uma das imagens de entrada (como a imagem de origem), essa imagem é subtraída da outra imagem. Por exemplo, aqui está a matemática resultante quando você inverte a imagem de origem...

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

Ou seja, sem transparência, você pode pegar a imagem 'A' e subtrair a imagem 'B produzindo a mesma imagem 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

Basicamente, qualquer que seja a imagem invertida, é a imagem que '[Linear Burn](#linearburn)' subtrairá da outra. Não importa se a imagem é a de origem ou a de destino. De certa forma, isso torna este método de composição mais versátil. Por exemplo, aqui subtraio uma imagem de um círculo à direita (que eu inverto), da que está à esquerda.

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

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

Este método de composição também é útil como alternativa ao Método de Subtração por Sequência Evaluate para subtrair múltiplas imagens de uma única imagem inicial. Note, porém, que '[Linear Burn](#linearburn)' não pode ser aplicado diretamente ao canal alfa das imagens, ao passo que o mais Método de Composição Matemático Minus pode. O método de composição '[Linear_Burn](#lineardodge)' foi adicionado à versão 6.5.4-3 do IM.
[IM Output]

Color_Dodge (divisão do photoshop)

Este método de composição usa a imagem de sobreposição de origem como uma máscara que, de certa forma, protege a imagem de fundo da "exposição à luz" ao longo de longos períodos de tempo. As partes expostas a uma máscara mais clara são tornadas mais claras (ou 'dodged'), enquanto as áreas pretas não produzem mudança. Você poderia pensar nisso como colocar um objeto sobre uma foto por um tempo muito longo, fazendo com que as partes expostas à luz clareiem lentamente com a idade, enquanto as partes que estavam cobertas permanecem como estavam. Uma sobreposição preto puro não muda a imagem, enquanto uma sobreposição branco puro tornará brancas todas as cores de fundo, exceto aquelas que eram preto puro. No entanto, ao contrário dos métodos de composição dodge '[Screen](#screen)' (multiplicação invertida) ou '[Linear_Dodge](#lineardodge)' (soma), uma imagem de destino preto puro ou toda branca permanecerá inalterada pela máscara de iluminação. Em outras palavras, apenas áreas que contêm cinzas e cores não puras são afetadas. Sua fórmula é: _Dest_ / (1-_Src_) exemplo e uso prático necessários aqui Na verdade, '[ColorDodge](#colordodge)' e os dois operadores '[Divide](#divide)' podem produzir os mesmos resultados. '[ColorDodge](#colordodge)', porém, exige que a imagem usada como 'divisor' seja invertida e usada como imagem de 'origem' para o operador. Por exemplo, todos estes comandos operando sobre as imagens 'N' (numerador) dividido pela 'D' (denominador) produzem a mesma imagem resultante 'R'... Presumindo que todas as imagens tenham o mesmo tamanho.

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

Veja '[Divide](#divide)' para um exemplo de como a divisão de imagens pode ser usada para a remoção de um gradiente de fundo. [IM Output]

Color_Burn

Este é o inverso de '[Color_Dodge](#colordodge)', equivalente a inverter todas as imagens de entrada e saída. O resultado é que a imagem de fundo é escurecida por uma imagem de mascaramento escura, enquanto o branco não produz escurecimento. No entanto, ao contrário dos métodos de composição burn '[Multiply](#multiply)' ou '[Linear_Burn](#linearburn)', uma imagem de destino preto puro ou toda branca permanecerá inalterada pela máscara de iluminação. Em outras palavras, apenas áreas que contêm cinzas e cores não puras são afetadas. Sua fórmula é: 1 - ( (1-_Dest_) / _Src_) exemplo e uso prático necessários aqui Este comando é equivalente ao conjunto anterior de fórmulas para implementar uma divisão de imagens. Observe a inversão final no comando.

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

Um uso de '[Color_Burn](#colorburn)' é limpar fundos de gradiente escuro para preto puro. Assim como '[Color_Dodge](#colorburn)' pode dividir fundos para branco. Antes do IM v6.5.4-3, provou-se que '[Color_Burn](#colorburn)' estava implementado incorretamente.

Métodos de Cópia de Canal

Esses métodos de composição de imagem foram projetados para transferir informações de canal de imagem de uma imagem para outra. Ele, porém, faz algumas suposições sobre a imagem da qual o 'canal' está sendo copiado. Sugiro que você leia as seções Espaço de Cor da Imagem e Operadores de Canais de Cor para entender como o IM representa os canais de cor da imagem na memória antes de usá-los. O método de composição de cópia de canal mais útil é 'Copy_Opacity' (veja abaixo). É a maneira mais simples de substituir (ou adicionar) completamente apenas o canal alfa a uma imagem existente, usando uma imagem de máscara em escala de cinza separada.

Copy_Opacity (Definir transparência a partir de máscara em escala de cinza)

O propósito original do operador '[Copy_Opacity](#copyopacity)' era copiar o canal de transparência da imagem de origem para a imagem de destino, para definir as partes transparentes dessa imagem. Isso é mais comumente feito usando os operadores Duff-Porter, que são especificamente projetados para compor imagens com transparências alfa. Por exemplo, se o destino for totalmente opaco, o que é típico do uso deste operador, então os operadores '[Dst_In](#dstin)', ou mesmo 'Dst_ATop', obterão o mesmo resultado. Então, por que o operador '[Copy_Opacity](#copyopacity)' é tão importante, quando há alternativas? A resposta está em como este operador trata um caso especial. Quando a imagem de sobreposição (origem) não tem canal alfa, então este operador a tratará como uma simples imagem de máscara em escala de cinza. Ou seja, ele substituirá qualquer canal alfa existente da imagem pela imagem em escala de cinza fornecida. Em resumo, tudo o que for preto na imagem em escala de cinza será considerado totalmente transparente, e branco totalmente opaco. Isso é tão importante, e tão comumente usado, que farei disso uma regra geral...

As imagens que usam este operador NÃO devem conter nenhum canal alfa.

Você pode garantir que as imagens não tenham nenhum canal alfa Desligando o Canal Alfa em ambas as imagens de entrada antes de compor usando a configuração de composição '[Copy_Opacity](#copyopacity)'. Por exemplo, crie uma imagem de lua em escala de cinza (que é fácil de desenhar) e depois use-a como máscara para um gradiente plasma azul, para produzir uma bela lua azul de aparência mesclada. |

  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]
Se suas imagens têm componentes transparentes que você precisa preservar, então este não é o operador de Composição Alfa de que você precisa. Muito provavelmente, você vai querer usar '[Dst_In](#dstin)' em vez disso, para subtrair as áreas transparentes da sobreposição de origem do seu destino (caso em que ambas as imagens precisam ter um canal alfa ativado e em uso). Este operador é explicado em ainda mais detalhes em Usando uma Imagem de Máscara com Fontes e em Editando Máscaras de Imagem. Ele também é usado em muitos outros exemplos ao longo destas páginas.

Copy_Red, Copy_Green, Copy_Blue

Copia o canal de cor especificado da imagem de origem para a imagem de destino. Como uma imagem RGB em escala de cinza tem os mesmos dados em todos os três canais de cor, esses métodos podem ser entendidos como copiar uma imagem de canal em escala de cinza para substituir o canal especificado na imagem de destino. Assim como o 'Copy_Opacity' (veja acima) pode substituir o 'canal alfa' de uma imagem por uma imagem em escala de cinza. Esses métodos de cópia de canal são raramente usados hoje, graças ao uso de vários Operadores de Canais de Cor para separar e recombinar canais de cor por meio de imagens de canal em escala de cinza. Note que, ao mesclar vários padrões de gradiente em escala de cinza, imagens de cor muito interessantes podem ser geradas usando esses operadores. Para alguns exemplos, veja as combinações de gradiente de cor nas tabelas brutas dos operadores de composição.

Copy_Cyan, Copy_Magenta, Copy_Yellow

Estes são sinônimos dos mesmos métodos da seção anterior. Basicamente, porque o canal 'Red' em imagens RGB também é usado como canal 'Cyan' nas imagens CYMK. O mesmo para os canais 'Green' e 'Magenta', e os canais 'Blue' e 'Yellow'. Por causa disso, copiar o canal 'Cyan' é o mesmo que copiar um canal 'Red'. Que tipo de canal os dados da imagem estão representando depende do Espaço de Cor atual da imagem na memória.

Copy_Black

Este também apenas copia o canal 'Black' da origem para o destino, se ele existir. No entanto, esse canal só existe para imagens CMYK. Se o canal 'Black' não existir, isso não faz nada, o que provavelmente é um bug. O que ele provavelmente deveria fazer é copiar uma imagem de canal 'Black' em escala de cinza para o canal preto da imagem de destino (presumindo que ele exista).

Hue (copiar a matiz de uma imagem RGB para o destino)

Este operador copia a matiz H da imagem de origem para substituir a matiz da imagem de destino, deixando inalteradas a saturação S e a luminância L (OU será luminância Y?) do fundo. Isso presume que ambas as imagens estejam no espaço de cor RGB. Não testei isso com uma imagem em espaço de cor não RGB.

Saturate (copiar a saturação de uma imagem RGB para o destino)

Copia a Saturação S da origem para o destino (presumindo que a imagem esteja no espaço de cor RGB), deixando inalteradas a matiz H da cor e a luminância L (OU será luminância Y?). Isso presume que ambas as imagens estejam no espaço de cor RGB. Não testei isso com uma imagem em espaço de cor não RGB.

Luminize (copiar a luminância de uma imagem RGB para o destino)

Copia a luminância L (OU será luminância Y?) da origem para o destino, deixando inalteradas a matiz H da cor e a saturação S. Isso presume que ambas as imagens sejam armazenadas usando o espaço de cor RGB. Não testei isso com uma imagem em espaço de cor não RGB.

Colorize (copiar a matiz e saturação da cor para o destino)

Copia a matiz H e a saturação S da origem para o destino, deixando inalterada a luminância L (OU será luminância Y?) da cor. Isso presume que ambas as imagens sejam armazenadas usando o espaço de cor RGB. Não testei isso com uma imagem em espaço de cor não RGB.


Dissolver uma Imagem Sobre Outra

O que o operador "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" faz é fornecer um método de composição '[Over](#over)' controlado. Ele ajusta a transparência da imagem de sobreposição, antes de ela ser sobreposta em cima do fundo, de acordo com as porcentagens dadas.

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

Fornecer dois argumentos (novo no IM v6) permite que você defina exatamente quanto tanto da imagem de sobreposição quanto da imagem de fundo é dissolvido antes de as imagens serem sobrepostas. Se apenas um único argumento de porcentagem for dado, apenas a sobreposição é dissolvida para deixar aquela quantidade (0 por cento é completamente transparente, 100 mantém a origem inalterada) antes de ser sobreposta (usando o método de composição '[Over](#over)') sobre o fundo. Além disso, se você continuar além de um valor de 100% (também novo no IM v6), ele começará então a dissolver a imagem de fundo. Em outras palavras, na faixa de 0 a 100 por cento, a imagem de fundo não é dissolvida de forma alguma (com um dst_percent de 100%), enquanto na faixa de 100 a 200 a sobreposição é deixada como está (src_percent definido em 100%), e o fundo é dissolvido, de modo que ele desaparece completamente quando o argumento atinge um valor de 200%). Aqui está uma tabela de resultados com vários argumentos de dissolve... |

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

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


Como você pode ver, "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" primeiro dissolve lentamente uma nova imagem sobre o fundo, depois dissolve lentamente a imagem de fundo original. O que é muito adequado para imagens que contêm áreas transparentes. Você também pode controlar a dissolução do fundo, de modo que, enquanto uma imagem se dissolve por cima, você pode fazer com que o fundo se dissolva por baixo. Isso é muito bom, mas não é realmente adequado para um estilo de dissolução de apresentação de slides propriamente dito entre imagens. À medida que uma imagem é sobreposta, as imagens não são mescladas igualmente, e trocar os argumentos das imagens (e os argumentos de dissolve correspondentes) produzirá resultados diferentes. Para que a faixa de 100% a 200%, ou o segundo argumento de porcentagem, funcione, a imagem de fundo deve conter um canal alfa. Isso é especialmente magick importante para imagens JPEG, que não contêm nenhuma transparência por padrão. Por isso, provavelmente é uma boa ideia dizer ao IM para dar a todas as imagens um canal alfa usando o operador "[-alpha](https://imagemagick.org/command-line-options/#alpha) Set" antes de aplicar o método de composição 'dissolve'.
A maior ressalva ao usar dissolve em ambas as imagens é que a transparência afeta a média. Ou seja, dissolver duas imagens em 50% sempre resultará em cores semitransparentes, mesmo quando ambas as imagens de entrada são totalmente opacas. Por exemplo:
  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]
Você pode ver que, após sobrepor a imagem sobre um padrão de tabuleiro de xadrez, todas as partes da imagem estão pelo menos semitransparentes. Embora as partes efetivamente sobrepostas sejam menos transparentes do que qualquer parte em que uma das imagens de origem é transparente. A única vez em que você obterá uma imagem totalmente opaca de uma composição 'Dissolve' é se uma das imagens (geralmente o 'fundo') não for dissolvida (um valor de 100 por cento) e permanecer opaca. É por isso que o padrão é usar um valor de 100 para o 'fundo', ao menos a princípio. Os seguintes são casos especiais para argumentos "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" específicos... 0x0 | | Ambas as imagens são dissolvidas até a transparência total.
Equivalente a um método de composição '[Clear](#clear)'.
---|---|---
0 | Apenas a imagem de fundo inalterada (origem tornada transparente).
Equivalente a um método de composição '[Dst](#dst)'.
100 | Uma sobreposição normal da imagem de sobreposição sobre o fundo.
Equivalente a um método de composição '[Over](#clear)'.
200 | A imagem de sobreposição sobre uma tela em branco (fundo tornado transparente).
Equivalente a um método de composição '[Src](#src)'.
O método de composição "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" é comumente usado como forma alternativa de Marcar Imagens com Marca d'Água, particularmente com marcas d'água coloridas.


Mesclar Duas Imagens

O método de composição "[-blend](https://imagemagick.org/command-line-options/#blend)" fornece o que o método de composição "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" pretendia fornecer originalmente, antes de ser desviado para outras operações mais básicas. Enquanto o método "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" sobrepõe as imagens uma sobre a outra, "[-blend](https://imagemagick.org/command-line-options/#blend)" mescla as imagens de tal forma que ambas são tratadas igualmente (sendo simplesmente somadas), de acordo com os argumentos de porcentagem dados. Assim, você pode obter o mesmo resultado (exceto no tamanho final da imagem) trocando as porcentagens e os argumentos das imagens. Esse não é o caso do método "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)". Em outras palavras, "[-blend](https://imagemagick.org/command-line-options/#blend)" é associativo (os argumentos são intercambiáveis), enquanto "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" não é.

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

Se apenas um único valor de porcentagem for dado, ele é usado como a porcentagem de dissolve para a sobreposição, enquanto a imagem de fundo é dissolvida pela quantidade exatamente oposta. Ou seja, um "-blend 30" dissolverá a sobreposição em 30%, e o fundo em 70%, antes de as duas imagens serem somadas. Assim, é equivalente a "-blend 30x70". O resultado disso é que a opacidade das duas imagens (nas áreas sobrepostas) ainda somará 100%.

Ao fornecer duas porcentagens, você pode controlar exatamente quanto das duas imagens deve ser mesclado. Aqui está uma tabela de resultados com vários 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 dos resultados, você pode ver que "[-blend](https://imagemagick.org/command-line-options/#blend)" permite que você substitua lentamente uma imagem por outra de forma igual, sem sobreposição. Se você sobrepor o resultado de um blend sobre uma tela preta, digamos do tamanho do seu monitor, poderá facilmente criar um programa de apresentação de slides respeitável, em que uma imagem se dissolve lentamente em outra. Você também pode ver que, como as imagens são somadas (internamente, ele usa o operador de composição '[Plus](#plus)'), você pode facilmente sobrecarregar os máximos dos canais de cor, produzindo alguns artefatos. Uma cor branco 100%, em particular, garantirá que nada da outra imagem fique visível, pois todos os canais de cor já estão em seu máximo. Recomenda-se que, na maioria das situações, você só precise usar a versão de argumento único do blend. Assim como com "-dissolve", a imagem de fundo deve conter um canal alfa para que "-blend" funcione corretamente, para dissolver a imagem de fundo. Por isso, provavelmente é uma boa ideia dizer ao IM para Definir um Canal Alfa em todas as imagens antes de aplicar a composição '[Blend](#blend)'.
Os seguintes são casos especiais para argumentos "[-blend](https://imagemagick.org/command-line-options/#blend)" específicos... 0x0
Equivalente a um método de composição '[Clear](#clear)'.
--- ---
0 Apenas a imagem de fundo inalterada.
Equivalente a um método de composição '[Dst](#dst)'.
100 A imagem de sobreposição sobre uma tela em branco.
Equivalente a um método de composição '[Src](#src)'.
100x100 Apenas as duas imagens somadas.
Equivalente a um método de composição '[Plus](#plus)'.
50 Média de ambas as imagens. Isso é equivalente ao operador de sequência de imagens "[-evaluate-sequence mean](https://imagemagick.org/command-line-options/#average)", mas com duas imagens. (Veja também Calculando a Média de Imagens)

Blend versus Dissolve

Embora tanto Dissolve quanto Blend tornem as imagens semitransparentes, "[-dissolve](https://imagemagick.org/command-line-options/#dissolve)" compõe a imagem usando '[Over](#over)', enquanto "[-blend](https://imagemagick.org/command-line-options/#blend)" mescla as imagens usando '[Plus](#plus)'. Isso pode não parecer grande coisa, mas pode ser muito importante, pois define como os dois métodos de composição tratam as partes da imagem que não são sobrepostas, ou as áreas em que a sobreposição é transparente. Por exemplo.

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

Note que, embora as partes não sobrepostas do fundo 'dragon' fiquem semitransparentes nas imagens Mescladas, a área da estrela é totalmente opaca em ambas, e contém o mesmo resultado de cor! Ou seja, para áreas em que ambas as imagens são totalmente opacas, e você permite que o IM calcule o segundo argumento '{_dst_percent_}' apropriado, você também ficará totalmente opaco e terá o mesmo resultado. Por exemplo, aqui mesclo a imagem 'dragon' com a imagem 'rose' embutida. Recorto ambas as imagens ao mesmo tamanho, de modo que ambas as imagens totalmente opacas possam se cobrir completamente.

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

Se você comparasse essas duas imagens, descobriria que elas são exatamente iguais. Em resumo, um Dissolve (over com apenas a imagem de sobreposição recebendo uma porcentagem de transparência) é o mesmo que um Blend (adição ponderada de ambas as imagens, cada uma com porcentagens apropriadas): produz o mesmo resultado para qualquer imagem totalmente opaca. É apenas quando uma ou ambas as imagens contêm transparência que os dois métodos diferem.

Usando Blend para Modificar uma Única Imagem

Blend é basicamente uma 'função de interpolação', ou 'média ponderada', que permite combinar duas imagens totalmente opacas de maneira linear controlada. Isto é, 30% da origem mais 70% do fundo, para produzir uma nova imagem 100% opaca. Ele pode, no entanto, fazer mais do que apenas combinar duas imagens. Também pode ser usado para clarear, definir contraste, saturação, colorir e até nitidificar uma imagem específica. Este uso do blend é discutido mais a fundo em um documento encontrado por BugBear bugbear@papermule.co.uk na WWW, Image Processing by Interpolation and Extrapolation, uma cópia daquele em Grafica Obscura (que não é diretamente vinculável a partir de uma fonte externa). Este documento é recomendado como leitura adicional sobre o uso desta função. A capacidade de extrapolação foi adicionada ao operador "[-blend](https://imagemagick.org/command-line-options/#blend)" no IM v6.3.5-10.
Por exemplo, aqui podemos tornar a imagem rose mais clara ou mais escura mesclando-a com uma imagem preto puro do mesmo tamanho.
  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 em qualquer uso do Método de Composição Blend, 0% resulta na imagem de 'destino', enquanto em 100% o resultado é a imagem de 'origem' original inalterada. São as imagens mescladas e de extrapolação que têm maior interesse aqui. De forma semelhante, mesclar com uma imagem de cinza puro permite ajustar o contraste de qualquer imagem.

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

Aqui mesclo a imagem com uma versão em escala de cinza da imagem, permitindo que você controle a saturação das cores.

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

Aqui mesclo a imagem rose com sua versão desfocada, produzindo Desfoques Suavizados ao interpolar, e Nitidez ao extrapolar, a partir de sua forma desfocada.

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


Opção Watermark - Composição 'Modulate'

A opção de composição "[-watermark](https://imagemagick.org/command-line-options/#watermark)", ou o método de composição "modulate", destina-se a descolorir imagens no espaço HSB para fins de direitos autorais.

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

   magick bgnd  overlay   -compose modulate \


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

     -composite   result
**

A imagem de 'sobreposição' é uma imagem em preto e branco mascarada por alfa, usada para clarear/escurecer a imagem de destino pela porcentagem de 'brightness' dada. Um 'brightness' de '0' não faz nenhuma mudança no brilho da imagem, enquanto um valor de '100' substitui o brilho pela intensidade da imagem de sobreposição. Ou seja, se a sobreposição for preta, o destino é tornado preto; se branca, a cor da imagem de destino ficará totalmente saturada. O 'saturation' tem padrão '100', produzindo a máxima saturação de cor. Se definido como '0', a área mascarada será dessaturada para preto e branco. Aqui está uma tabela de resultados com vários argumentos... |

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

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


Um bom valor para marcar imagens de forma leve é um brightness de cerca de 15 a 30 por cento. Os seguintes são casos especiais para argumentos "[-watermark](https://imagemagick.org/command-line-options/#watermark)" específicos... 0 Nenhuma mudança é feita na imagem de destino.
100 Destino tornado preto onde a sobreposição é preta, e matiz de cor totalmente saturada onde a sobreposição é branca
0x0 A área de sobreposição mascarada é dessaturada para escala de cinza
100x0 A sobreposição em escala de cinza é simplesmente sobreposta '[ATop](#atop)' do destino.
Para outras técnicas de marca d'água, veja Marcar Imagens com Marca d'Água.

Usando uma Máscara de Composição para Limitar a Área Composta

O comando "magick composite" e o operador "[-composite](https://imagemagick.org/command-line-options/#composite)" também aceitam uma terceira imagem de mascaramento, que limitará a área afetada pelo método "[-compose](https://imagemagick.org/command-line-options/#compose)". Por exemplo, dadas duas imagens e uma imagem mask, você pode sobrepor parte da imagem source sobre a imagem background, conforme definido por aquela máscara. Note, porém, que a imagem background ainda define o tamanho final da imagem resultante.

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

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

A imagem mask é considerada parte da imagem de destino, definindo quais partes do destino podem ser modificadas pelo resultado da composição alfa. Ou seja, as partes brancas podem ser modificadas, enquanto as partes pretas (e as partes fora da imagem de máscara) são deixadas como estão. Infelizmente, embora as configurações "[-gravity](https://imagemagick.org/command-line-options/#gravity)" e "[-geometry](https://imagemagick.org/command-line-options/#geometry)" permitam reposicionar a imagem source, a imagem mask NÃO é reposicionada, e permanece alinhada com a imagem destination. Então, vamos deixar isto bem claro...

A máscara é alinhada à imagem de fundo original.
Nenhuma configuração de gravidade/geometria é aplicada a ela.

Isso significa que, se eu quiser reposicionar a máscara, preciso ampliar a imagem de máscara com a quantidade apropriada de linhas e colunas pretas. Veja Splice, adicionando linhas e colunas de pixels. Por exemplo, aqui está uma versão "magick" (os argumentos das imagens de origem e fundo estão trocados), com a imagem de máscara ajustada de modo a movê-la em relação à imagem de fundo. |

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

[IM Output]
Lembre-se de que o operador "[-composite](https://imagemagick.org/command-line-options/#composite)" dos comandos "magick" especifica primeiro a imagem de destino ou fundo. O resultado é como dar à máscara um deslocamento de '+10+25', mas sem que nem a imagem de origem nem a de fundo se movam. Se você quiser alinhar a máscara com a imagem de origem, talvez seja melhor mascarar a imagem de origem separadamente (usando '[Copy_Opacity](#copyopacity)' ou alguma outra técnica). Então você pode posicionar esse resultado sobre o fundo sem problemas de alinhamento. Aqui está um exemplo semelhante, mas desta vez uso uma máscara de gradiente do mesmo tamanho da imagem de fundo, de modo a mesclar as duas imagens, produzindo um efeito de 'águas rasas'. |

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

[IM Output]
Isso fornece uma maneira simples de sobrepor duas imagens. Veja Sobrepondo Fotos.

Máscara de Composição e Transparência

Você pode pensar, pelo acima, que usar uma máscara de composição de três imagens é muito parecido com usar o '[Copy_Opacity](../static/img/compose/copyopacity)' para definir uma transparência da imagem de sobreposição, e depois compor isso sobre o seu fundo. E, para imagens sem nenhuma transparência (como as acima), você estaria certo. Mas essa não é a história toda. Primeiro, a máscara está atrelada à imagem de destino, e não à imagem de origem, então ela não é deslocada nem afetada pela gravidade. Além disso, ao contrário de '[Copy_Opacity](../static/img/compose/copyopacity)', a imagem de máscara é tratada como puramente uma imagem em escala de cinza. O IM ignorará toda e qualquer transparência alfa que a máscara possa ter. Por isso, você não precisa se preocupar em Desligar o Canal Alfa na imagem de máscara. E, por fim, a máscara funciona limitando a área que foi modificada, o que é muito diferente de apenas mascarar a imagem de origem. Para uma simples composição '[Over](../static/img/compose/over)', isso é o mesmo que se a máscara fosse multiplicada por qualquer transparência na imagem de origem, para limitar o que é sobreposto. Assim, para imagens de origem completamente opacas, você pode pensar nela como a transparência da imagem de origem. Por exemplo, sobreponha dois círculos normalmente e depois sobreponha-os com uma máscara limitando a área em que a imagem de destino é alterada.

  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]

O resultado é equivalente à imagem dos círculos vermelhos sendo 'mascarada' pela máscara em escala de cinza dada, que é então sobreposta sobre a imagem de destino. No entanto, com qualquer outro tipo de método de composição alfa, é melhor você simplesmente pensar na máscara como algo que limita a área de efeito, em vez de como uma máscara de transparência da imagem de origem. Aqui usei um método '[Src](../static/img/compose/src)' para substituir a área mascarada no destino pelo conteúdo da imagem de origem. |

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

[IM Output]
Como você pode ver, apenas a área com a máscara definida é de fato substituída pelo resultado da composição alfa. Se a máscara fosse usada apenas para modificar a transparência da imagem de origem, o acima mostraria apenas a imagem de origem e nada da imagem de fundo.

FUTURE:  Usar composição mascarada para sobrepor um objeto à frente de um
fundo, mas atrás de algum objeto em primeiro plano.  Também desenvolver um exemplo animado,
de algo sendo obscurecido por objetos em primeiro plano no destino.

| _O acima era um bug de longo prazo importante envolvendo o mascaramento de composição quando você envolvia imagens de origem ou sobreposição com transparência, e/ou tentava usar outras composições alfa que não o método de composição '[Over](#over)'. Veja Bug da Máscara de Composição para detalhes.

_
---|---


Composição usando Ladrilhos de Imagem

A configuração "[-tile](https://imagemagick.org/command-line-options/#tile)" no "magick composite" é muito diferente dessa mesma configuração no "magick" ou no "magick montage". Se dada, ela significa que a imagem source deve ser ladrilhada sobre a imagem background. Por exemplo, aqui ladrilhamos uma 'estrela colorida' sobre uma imagem de mapa de cores netscape... |

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

[IM Output]
Um uso comum do ladrilhamento por composição é ladrilhar um aviso de direitos autorais semitransparente, ou algum outro aviso, sobre as imagens antes de publicá-las na rede. Para exemplos disso, veja os últimos exemplos de Marcar com Texto. Note que a configuração é essencialmente (pelo menos por enquanto) sem argumentos. É apenas uma flag booleana de liga e desliga para a operação final do "magick composite". Consequentemente, você não pode usá-la para ladrilhar uma imagem background, pois isso significaria que o IM não pode usar a imagem de fundo para definir o tamanho final do resultado. No entanto, você pode ladrilhar uma imagem sob outra imagem usando '[Dst_Over](#dstover)' em vez disso. |

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

[IM Output]
Além disso, muitos dos operadores matemáticos são associativos, ou seja, a origem e o destino podem ser trocados sem afetar o resultado (exceto o tamanho final da imagem). Atualmente, não há um método simples de fazer uma composição alfa ladrilhada no comando "magick". Isso é uma pena, pois tornaria Ladrilhar com uma Imagem já em Memória muito mais fácil do que é atualmente. A técnica básica para o ladrilhamento por composição usando "magick" é Clonar a imagem original, e ladrilhá-la usando um dos métodos dados em Telas Ladrilhadas. Por exemplo... |

  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]
O acima substitui um 'fundo branco' da label usando o método de Composição Matemática "[Multiply](#multiply)". Veja também Usando Máscara de Imagem, Composição Matemática.


Métodos de Composição Especiais

Há também alguns métodos de composição de propósito especial que foram adicionados por uma razão ou outra.

Mathematics (Método de Composição Matemático Definido pelo Usuário)

Este método de composição recebe 4 valores numéricos para permitir que o usuário defina muitos Métodos de Composição Matemáticos diferentes. Os quatro argumentos, "A", "B", "C" e "D", definem a fórmula...

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

onde "Sc" é a imagem de origem ou sobreposição, e "Dc" é a imagem de fundo ou destino. Todos os quatro valores devem ser fornecidos. Por exemplo, poderíamos gerar o equivalente de um método de composição '[Multiply](#multiply)' usando os 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]
Source | | [IM Output]
Dest | | [IM Output]
Result
---|---|---|---|---

De forma semelhante, ao consultar ou deduzir a fórmula necessária, você pode gerar outros métodos de composição, tais 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]
Ou '[LinearLight](#linearlight)', que é diretamente definido usando os 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 semelhante, você pode gerar outros métodos de composição, tais como... Método de Composição | 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
Outros métodos de composição exigem o uso de quadrados, raízes quadradas, divisão, ou até múltiplas funções especiais definidas por partes e condicionais, o que os impede de serem definidos usando a simples função polinomial suave que este método fornece. Você também pode criar novos métodos de composição, por exemplo uma alternativa expandida ao 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 composição DIY em particular é importante como meio de Adicionar Gradientes com Viés, como ondas senoidais. Ou outra variante que pode ser usada para 'Efeitos de Iluminação'... |

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

[IM Output]
O método de composição matemática é especialmente importante por permitir que você faça tipos especiais de Matemática em Gradientes que, de outra forma, seriam muito complexos de obter usando múltiplos passos individuais. | O método de composição '[Mathematics](#mathematics)' foi adicionado à versão 6.5.4-3 do IM. E atualmente só está disponível usando o operador "-compose". Não está disponível a partir do comando "magick composite" devido à sua necessidade de argumentos.
---|---

Change_Mask (Tornar transparentes os pixels similares)

Este é um método incomum que só tornará totalmente transparentes pixels específicos na imagem de destino. Ou seja, os pixels na imagem de destino que correspondem à imagem de origem dada, de acordo com a configuração atual de Fator Fuzz. Isso pode ser usado, por exemplo, para readicionar transparência a uma imagem que foi sobreposta sobre um fundo complexo (mas muito diferente). Por exemplo, este foi exatamente o problema apresentado por Jesper Eije...

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

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

Fácil. Note que, como as cores das imagens JPEG frequentemente têm ligeiras mudanças de cor devido à natureza com perdas do formato de arquivo, será necessária uma pequena configuração de Fator Fuzz para corresponder cores muito similares. Além disso, se a parte alterada da imagem por acaso corresponder à cor ou padrão de fundo, você obterá 'buracos' na imagem ou máscara resultante, portanto cautela é sempre recomendada ao usar isto com imagens que são muito similares. Ao trocar as duas imagens, de modo que a imagem de fundo seja dada como a imagem de destino, você pode extrair as partes do fundo que foram substituídas ou modificadas pela imagem sobreposta. |

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

[IM Output]
Note que o resultado é apenas uma máscara de forma transparente da imagem de fundo original, onde os pixels similares são simplesmente limpos para transparência. Ele não fará nenhuma tentativa de gerar transparências parciais, ou de mudar cores, e por isso poderia deixar um 'halo' de cores de fundo ligeiramente diferentes ao redor da imagem, onde a sobreposição original e a cor de fundo se mesclaram. Como este método de composição apenas 'limpa' pixels para transparência total, um canal alfa será sempre adicionado à imagem resultante. A cor da imagem de destino, porém, não é limpa, como acontece na maioria dos outros métodos de Composição Alfa. Assim, você pode inverter o canal alfa para obter as cores inalteradas. |

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

[IM Output]
Neste caso, a ordem das imagens de entrada não importa, a menos que um grande Fator Fuzz tenha sido definido. Lembre-se de que as cores virão da imagem de destino, com a diferença entre as imagens definindo a máscara de forma resultante. Para mais informações sobre esses problemas, veja Remoção de Fundo. O resultado é frequentemente limitado em sua utilidade direta. Ele pode, no entanto, ser usado para gerar máscaras de bitmap das mudanças entre as imagens (daí seu nome). | _O método de composição '[ChangeMask](#changemask)' foi adicionado ao IM v6.3.4, para fornecer um método de Otimização de Transparência para Animações GIF. Nenhum outro método de composição existente fornecia os requisitos necessários, sem combinar 3 ou mais métodos de composição. Especificamente, o requisito booleano (ou de limiarização por fator fuzz) necessário para a otimização de transparência.

O resultado, no entanto, é tão útil por si só que foi disponibilizado para uso direto pelos usuários, e assim definiu o nome deste método de composição bastante complexo._
---|---

Métodos de Efeito por Mapeamento de Imagem

Há também alguns métodos especiais que não são estritamente métodos de composição. Em vez de combinar diretamente as duas imagens pixel a pixel, a imagem de origem ou de sobreposição é um mapa de controle especial, para algum efeito maior. Embora os métodos que elas representam sejam relativamente simples, seu uso é tão complexo que têm sua própria seção de exemplos. Efeitos de Mapeamento de Imagem. Esses métodos especiais incluem... O método 'Blur' fornece uma maneira de desfocar imagens de diferentes formas, pixel a pixel. Ele pode gerar uma ampla gama de efeitos DIY de desfoque de imagem. Veja Mapeamento de Blur Variável para detalhes. O método 'Displace', por outro lado, fornece uma técnica de deslocamento por consulta de pixels tanto absoluta quanto relativa, que gera não só métodos específicos de distorção de imagem, mas também efeitos de vidro, lente e ondulação. Veja Mapeamento de Distorção e Deslocamento para detalhes.