]> granicus.if.org Git - imagemagick/commitdiff
https://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=33193
authorCristy <urban-warrior@imagemagick.org>
Tue, 12 Dec 2017 23:31:47 +0000 (18:31 -0500)
committerCristy <urban-warrior@imagemagick.org>
Tue, 12 Dec 2017 23:31:47 +0000 (18:31 -0500)
MagickCore/composite.c

index f734cda57c586d85a2a15ced21287b174197b6de..74f2a1b795d3041bd4a90c1ef23ea1bd62c7d1ba 100644 (file)
@@ -1532,9 +1532,6 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
         PixelTrait source_traits=GetPixelChannelTraits(source_image,channel);
         if (traits == UndefinedPixelTrait)
           continue;
-        if ((source_traits == UndefinedPixelTrait) &&
-            (channel != AlphaPixelChannel))
-          continue;
         if (channel == AlphaPixelChannel)
           {
             /*
@@ -1642,6 +1639,11 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
                 pixel=QuantumRange*Da;
                 break;
               }
+              case MultiplyCompositeOp:
+              {
+                pixel=QuantumRange*Sa*Da;
+                break;
+              }
               default:
               {
                 pixel=QuantumRange*alpha;
@@ -1652,6 +1654,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               ClampToQuantum(pixel);
             continue;
           }
+        if (source_traits == UndefinedPixelTrait)
+          continue;
         /*
           Sc: source color.
           Dc: canvas color.
@@ -1663,7 +1667,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
             /*
               Copy channel.
             */
-            q[i]=Sc;
+            q[i]=Dc;
             continue;
           }
         /*