...
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 6b877be..49a9840 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -907,6 +907,7 @@
status=MagickTrue;
progress=0;
width=GetOptimalKernelWidth2D(radius,sigma);
+printf("%d\n",width);
mid=(ssize_t) width/2L;
image_view=AcquireVirtualCacheView(image,exception);
blur_view=AcquireAuthenticCacheView(blur_image,exception);
@@ -989,14 +990,15 @@
{
n=p+(ssize_t) GetPixelChannels(image)*width*(mid-v)+
GetPixelChannels(image)*(mid-u);
- weight=BlurGaussian(QuantumScale*(n[i]-p[i]),intensity_sigma)*
- BlurGaussian(BlurDistance(x,y,x+u-mid,y+v-mid),spatial_sigma);
- pixel+=weight*QuantumScale*n[i];
+ weight=BlurGaussian(ScaleQuantumToChar(n[i])-(ssize_t)
+ ScaleQuantumToChar(p[i]),intensity_sigma)*BlurGaussian(
+ BlurDistance(x,y,x+u-mid,y+v-mid),spatial_sigma);
+ pixel+=weight*n[i];
gamma+=weight;
}
}
SetPixelChannel(blur_image,channel,ClampToQuantum(
- QuantumRange*PerceptibleReciprocal(gamma)*pixel),q);
+ PerceptibleReciprocal(gamma)*pixel),q);
continue;
}
/*
@@ -1014,13 +1016,14 @@
GetPixelChannels(image)*(mid-u);
alpha=(double) (QuantumScale*GetPixelAlpha(image,p));
beta=(double) (QuantumScale*GetPixelAlpha(image,n));
- weight=BlurGaussian(QuantumScale*(n[i]-p[i]),intensity_sigma)*
- BlurGaussian(BlurDistance(x,y,x+u-mid,y+v-mid),spatial_sigma);
- pixel+=weight*QuantumScale*n[i];
+ weight=BlurGaussian(ScaleQuantumToChar(n[i])-(ssize_t)
+ ScaleQuantumToChar(p[i]),intensity_sigma)*BlurGaussian(
+ BlurDistance(x,y,x+u-mid,y+v-mid),spatial_sigma);
+ pixel+=weight*n[i];
gamma+=weight*alpha*beta;
}
}
- SetPixelChannel(blur_image,channel,ClampToQuantum(QuantumRange*
+ SetPixelChannel(blur_image,channel,ClampToQuantum(
PerceptibleReciprocal(gamma)*pixel),q);
}
q+=GetPixelChannels(blur_image);