]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 14 Sep 2014 21:17:36 +0000 (21:17 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 14 Sep 2014 21:17:36 +0000 (21:17 +0000)
MagickCore/decorate.c
MagickCore/morphology.c
MagickCore/transform.c

index 77fded24b1354e816a9c87c93625a64179c27e75..fc7faa2c836ce4af2dfaeb8a04b10e8e120c3459 100644 (file)
@@ -462,9 +462,11 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info,
           {
             PixelChannel channel=GetPixelChannelChannel(image,i);
             PixelTrait traits=GetPixelChannelTraits(image,channel);
-            if ((traits & (CopyPixelTrait | UpdatePixelTrait)) == 0)
+            PixelTrait frame_traits=GetPixelChannelTraits(frame_image,channel);
+            if ((traits == UndefinedPixelTrait) ||
+                (frame_traits == UndefinedPixelTrait))
               continue;
-            q[i]=p[i];
+            SetPixelChannel(frame_image,channel,p[i],q);
           }
           SetPixelRed(frame_image,GetPixelRed(image,p),q);
           SetPixelGreen(frame_image,GetPixelGreen(image,p),q);
index 51aed6b0ea3bf20797a6e9c83ffc1b8b6b96a449..e74def43d04fcf9a03c4dc00f6b198ffec6d1a36 100644 (file)
@@ -2880,8 +2880,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
         if ((traits == UndefinedPixelTrait) ||
             (morphology_traits == UndefinedPixelTrait))
           continue;
-        if (((morphology_traits & CopyPixelTrait) != 0) ||
-            (GetPixelReadMask(image,p+center) == 0))
+        if (GetPixelReadMask(image,p+center) == 0)
           {
             SetPixelChannel(morphology_image,channel,p[center+i],q);
             continue;
@@ -2932,7 +2931,6 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
                  http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf
             */
             k=(&kernel->values[kernel->width*kernel->height-1]);
-            count=0;
             if ((morphology_traits & BlendPixelTrait) == 0)
               {
                 /*
@@ -2943,10 +2941,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
                   for (u=0; u < (ssize_t) kernel->width; u++)
                   {
                     if (IfNaN(*k) == MagickFalse)
-                      {
-                        pixel+=(*k)*pixels[i];
-                        count++;
-                      }
+                      pixel+=(*k)*pixels[i];
                     k--;
                     pixels+=GetPixelChannels(image);
                   }
@@ -2957,15 +2952,19 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
             /*
               Alpha blending.
             */
+            count=0;
+            gamma=0.0;
+            alpha=1.0;
             for (v=0; v < (ssize_t) kernel->height; v++)
             {
               for (u=0; u < (ssize_t) kernel->width; u++)
               {
                 if (IfNaN(*k) == MagickFalse)
                   {
-                    alpha=(double) (QuantumScale*GetPixelAlpha(image,pixels));
-                    pixel+=(*k)*alpha*pixels[i];
-                    gamma+=(*k)*alpha;
+                    if (channel != AlphaPixelChannel)
+                      alpha=(double) (QuantumScale*GetPixelAlpha(image,pixels));
+                    pixel+=alpha*(*k)*pixels[i];
+                    gamma+=alpha*(*k);
                     count++;
                   }
                 k--;
@@ -3201,7 +3200,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(morphology_image);
     }
-    if ( SyncCacheViewAuthenticPixels(morphology_view,exception) == MagickFalse)
+    if (SyncCacheViewAuthenticPixels(morphology_view,exception) == MagickFalse)
       status=MagickFalse;
     if (image->progress_monitor != (MagickProgressMonitor) NULL)
       {
index 03fc439f3b70f5deb5f1cb83517e2c97b75e1455..cab89da7ebf316a67e03cb2fcbcf49c8dda56a93 100644 (file)
@@ -1745,6 +1745,12 @@ MagickExport Image *SpliceImage(const Image *image,
       splice_image=DestroyImage(splice_image);
       return((Image *) NULL);
     }
+  if ((IsPixelInfoGray(&splice_image->background_color) == MagickFalse) &&
+      (IsGrayColorspace(splice_image->colorspace) != MagickFalse))
+    (void) SetImageColorspace(splice_image,sRGBColorspace,exception);
+  if ((splice_image->background_color.alpha_trait == BlendPixelTrait) &&
+      (splice_image->alpha_trait != BlendPixelTrait))
+    (void) SetImageAlpha(splice_image,OpaqueAlpha,exception);
   (void) SetImageBackgroundColor(splice_image,exception);
   /*
     Respect image geometry.
@@ -1854,6 +1860,10 @@ MagickExport Image *SpliceImage(const Image *image,
           continue;
         SetPixelChannel(splice_image,channel,p[i],q);
       }
+      SetPixelRed(splice_image,GetPixelRed(image,p),q);
+      SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+      SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+      SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(splice_image);
     }
@@ -1881,6 +1891,10 @@ MagickExport Image *SpliceImage(const Image *image,
           continue;
         SetPixelChannel(splice_image,channel,p[i],q);
       }
+      SetPixelRed(splice_image,GetPixelRed(image,p),q);
+      SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+      SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+      SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(splice_image);
     }
@@ -1951,6 +1965,10 @@ MagickExport Image *SpliceImage(const Image *image,
           continue;
         SetPixelChannel(splice_image,channel,p[i],q);
       }
+      SetPixelRed(splice_image,GetPixelRed(image,p),q);
+      SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+      SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+      SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(splice_image);
     }
@@ -1978,6 +1996,10 @@ MagickExport Image *SpliceImage(const Image *image,
           continue;
         SetPixelChannel(splice_image,channel,p[i],q);
       }
+      SetPixelRed(splice_image,GetPixelRed(image,p),q);
+      SetPixelGreen(splice_image,GetPixelGreen(image,p),q);
+      SetPixelBlue(splice_image,GetPixelBlue(image,p),q);
+      SetPixelAlpha(splice_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(splice_image);
     }