for (x=0; x < (ssize_t) image->columns; x++)
{
double
+ gamma,
Sa;
register ssize_t
continue;
}
Sa=QuantumScale*GetPixelAlpha(image,q);
+ gamma=PerceptibleReciprocal(Sa);
for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
{
PixelChannel channel=GetPixelChannelChannel(image,i);
PixelTrait traits=GetPixelChannelTraits(image,channel);
if ((traits & UpdatePixelTrait) == 0)
continue;
- q[i]=ClampToQuantum(Sa*q[i]);
+ q[i]=ClampToQuantum(gamma*q[i]);
}
q+=GetPixelChannels(image);
}
#include "MagickCore/cache.h"
#include "MagickCore/cache-private.h"
#include "MagickCore/cache-view.h"
+#include "MagickCore/channel.h"
#include "MagickCore/client.h"
#include "MagickCore/color.h"
#include "MagickCore/color-private.h"
edge_image=DestroyImage(edge_image);
return((Image *) NULL);
}
- (void) SetImageAlphaChannel(edge_image,DisassociateAlphaChannel,exception);
+ (void) SetImageAlphaChannel(edge_image,OffAlphaChannel,exception);
/*
Find the intensity gradient of the image.
*/
break;
for (x=0; x < (ssize_t) roi->width; x++)
{
- *q++=ScaleQuantumToLongLong(ClampToQuantum(GetPixelIntensity(image,p)));
+ *q++=ScaleQuantumToLongLong(ClampToQuantum(
+ GetPixelIntensity(image,p)));
p+=GetPixelChannels(image);
}
}
{
MagickRealType
blue,
+ gamma,
green,
red,
intensity;
method=Rec709LumaPixelIntensityMethod;
if (image != (const Image *) NULL)
method=image->intensity;
- red=pixel->red;
- green=pixel->green;
- blue=pixel->blue;
+ gamma=1.0;
+ if (image->alpha_trait != UndefinedPixelTrait)
+ gamma=PerceptibleReciprocal(QuantumScale*pixel->alpha);
+ red=gamma*pixel->red;
+ green=gamma*pixel->green;
+ blue=gamma*pixel->blue;
switch (method)
{
case AveragePixelIntensityMethod:
{
MagickRealType
blue,
+ gamma,
green,
red,
intensity;
- if (image->colorspace == GRAYColorspace)
- return((MagickRealType) GetPixelGray(image,pixel));
- red=(MagickRealType) GetPixelRed(image,pixel);
- green=(MagickRealType) GetPixelGreen(image,pixel);
- blue=(MagickRealType) GetPixelBlue(image,pixel);
+ gamma=1.0;
+ if (image->alpha_trait != UndefinedPixelTrait)
+ gamma=PerceptibleReciprocal(QuantumScale*GetPixelAlpha(image,pixel));
+ red=gamma*GetPixelRed(image,pixel);
+ green=gamma*GetPixelGreen(image,pixel);
+ blue=gamma*GetPixelBlue(image,pixel);
switch (image->intensity)
{
case AveragePixelIntensityMethod: