]> granicus.if.org Git - imagemagick/commitdiff
Fixed alpha channel issue.
authordirk <dirk@git.imagemagick.org>
Sat, 3 Sep 2016 18:31:21 +0000 (20:31 +0200)
committerdirk <dirk@git.imagemagick.org>
Sat, 3 Sep 2016 18:31:21 +0000 (20:31 +0200)
MagickCore/composite.c

index 26c7c421b11141c6bb28729c8f256f5d78fdeda6..8e70a7f95a6af21f4f791d4402ad7aeed0533a91 100644 (file)
@@ -559,7 +559,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
   assert(image->signature == MagickCoreSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(composite!= (Image *) NULL);
+  assert(composite != (Image *) NULL);
   assert(composite->signature == MagickCoreSignature);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
@@ -1507,24 +1507,8 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
         if (traits == UndefinedPixelTrait)
           continue;
         if ((source_traits == UndefinedPixelTrait) &&
-             (((compose != CopyAlphaCompositeOp) &&
-               (compose != ChangeMaskCompositeOp)) ||
-               (channel != AlphaPixelChannel)))
+            (channel != AlphaPixelChannel))
             continue;
-        /*
-          Sc: source color.
-          Dc: canvas color.
-        */
-        Sc=(MagickRealType) GetPixelChannel(source_image,channel,p);
-        Dc=(MagickRealType) q[i];
-        if ((traits & CopyPixelTrait) != 0)
-          {
-            /*
-              Copy channel.
-            */
-            q[i]=Sc;
-            continue;
-          }
         if (channel == AlphaPixelChannel)
           {
             /*
@@ -1642,6 +1626,20 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               ClampToQuantum(pixel);
             continue;
           }
+        /*
+          Sc: source color.
+          Dc: canvas color.
+        */
+        Sc=(MagickRealType) GetPixelChannel(source_image,channel,p);
+        Dc=(MagickRealType) q[i];
+        if ((traits & CopyPixelTrait) != 0)
+          {
+            /*
+              Copy channel.
+            */
+            q[i]=Sc;
+            continue;
+          }
         /*
           Porter-Duff compositions:
             Sca: source normalized color multiplied by alpha.