]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 8 Mar 2013 12:33:42 +0000 (12:33 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 8 Mar 2013 12:33:42 +0000 (12:33 +0000)
MagickCore/effect.c
MagickCore/gem.c

index 305f9e4a1e04526c0eb5ed0a27f2d22869c67bbe..b42fd6b3a5441bbbef0968459a8377570c921992 100644 (file)
@@ -866,7 +866,7 @@ MagickExport Image *BlurImage(const Image *image,const double radius,
       ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
     }
   normalize=0.0;
-  j=(ssize_t) kernel_info->width/2;
+  j=(ssize_t) (kernel_info->width-1)/2;
   i=0;
   for (v=(-j); v <= j; v++)
   {
@@ -879,6 +879,8 @@ MagickExport Image *BlurImage(const Image *image,const double radius,
     }
   }
   kernel_info->values[i/2]+=(1.0-normalize);
+  if (sigma < MagickEpsilon)
+    kernel_info->values[i/2]=1.0;
   blur_image=ConvolveImage(image,kernel_info,exception);
   kernel_info=DestroyKernelInfo(kernel_info);
   return(blur_image);
@@ -1282,7 +1284,7 @@ MagickExport Image *EdgeImage(const Image *image,const double radius,
       kernel_info=DestroyKernelInfo(kernel_info);
       ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
     }
-  j=(ssize_t) kernel_info->width/2;
+  j=(ssize_t) (kernel_info->width-1)/2;
   i=0;
   for (v=(-j); v <= j; v++)
   {
@@ -1374,7 +1376,7 @@ MagickExport Image *EmbossImage(const Image *image,const double radius,
       kernel_info=DestroyKernelInfo(kernel_info);
       ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
     }
-  j=(ssize_t) kernel_info->width/2;
+  j=(ssize_t) (kernel_info->width-1)/2;
   k=j;
   i=0;
   for (v=(-j); v <= j; v++)
@@ -1474,7 +1476,7 @@ MagickExport Image *GaussianBlurImage(const Image *image,const double radius,
       kernel_info=DestroyKernelInfo(kernel_info);
       ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
     }
-  j=(ssize_t) kernel_info->width/2;
+  j=(ssize_t) (kernel_info->width-1)/2;
   i=0;
   for (v=(-j); v <= j; v++)
   {
@@ -3224,7 +3226,7 @@ MagickExport Image *SharpenImage(const Image *image,const double radius,
       ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
     }
   normalize=0.0;
-  j=(ssize_t) kernel_info->width/2;
+  j=(ssize_t) (kernel_info->width-1)/2;
   i=0;
   for (v=(-j); v <= j; v++)
   {
@@ -3237,6 +3239,8 @@ MagickExport Image *SharpenImage(const Image *image,const double radius,
     }
   }
   kernel_info->values[i/2]=(double) ((-2.0)*normalize);
+  if (sigma < MagickEpsilon)
+    kernel_info->values[i/2]=1.0;
   sharp_image=ConvolveImage(image,kernel_info,exception);
   kernel_info=DestroyKernelInfo(kernel_info);
   return(sharp_image);
index 17a0dd49168c00b960eb39f9f1b58e59351d6076..36d466c985627f6fa07e8d205bfa574b6a3b24a9 100644 (file)
@@ -938,7 +938,7 @@ MagickPrivate size_t GetOptimalKernelWidth1D(const double radius,
   for (width=5; ; )
   {
     normalize=0.0;
-    j=(ssize_t) width/2;
+    j=(ssize_t) (width-1)/2;
     for (i=(-j); i <= j; i++)
       normalize+=exp(-((double) (i*i))*alpha)*beta;
     value=exp(-((double) (j*j))*alpha)*beta/normalize;
@@ -978,7 +978,7 @@ MagickPrivate size_t GetOptimalKernelWidth2D(const double radius,
   for (width=5; ; )
   {
     normalize=0.0;
-    j=(ssize_t) width/2;
+    j=(ssize_t) (width-1)/2;
     for (v=(-j); v <= j; v++)
       for (u=(-j); u <= j; u++)
         normalize+=exp(-((double) (u*u+v*v))*alpha)*beta;