]> granicus.if.org Git - imagemagick/commitdiff
CopyCompositeOp should set the alpha channel to opaque if the source image has no...
authordirk <dirk@git.imagemagick.org>
Sat, 3 Sep 2016 19:08:33 +0000 (21:08 +0200)
committerdirk <dirk@git.imagemagick.org>
Sat, 3 Sep 2016 19:08:33 +0000 (21:08 +0200)
MagickCore/composite.c

index 8e70a7f95a6af21f4f791d4402ad7aeed0533a91..f9945b2c96ef0ed4bdf71f6d926240784ff45f8d 100644 (file)
@@ -641,16 +641,18 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               q+=GetPixelChannels(image);
               continue;
             }
-          for (i=0; i < (ssize_t) GetPixelChannels(source_image); i++)
+          for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
           {
-            PixelChannel channel=GetPixelChannelChannel(source_image,i);
+            PixelChannel channel=GetPixelChannelChannel(image,i);
+            PixelTrait traits=GetPixelChannelTraits(image,channel);
             PixelTrait source_traits=GetPixelChannelTraits(source_image,
               channel);
-            PixelTrait traits=GetPixelChannelTraits(image,channel);
-            if ((traits == UndefinedPixelTrait) ||
-                (source_traits == UndefinedPixelTrait))
+            if (traits == UndefinedPixelTrait)
               continue;
-            SetPixelChannel(image,channel,p[i],q);
+            if (source_traits != UndefinedPixelTrait)
+              SetPixelChannel(image,channel,p[i],q);
+            else if (channel == AlphaPixelChannel)
+              SetPixelChannel(image,channel,OpaqueAlpha,q);
           }
           p+=GetPixelChannels(source_image);
           q+=GetPixelChannels(image);