From: cristy Date: Sun, 24 May 2015 18:11:01 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~1006 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=31e75937db91fd53e7deb9e3544646d0459f2196;p=imagemagick --- diff --git a/MagickCore/channel.c b/MagickCore/channel.c index 16a884595..99a52302c 100644 --- a/MagickCore/channel.c +++ b/MagickCore/channel.c @@ -981,6 +981,7 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image, for (x=0; x < (ssize_t) image->columns; x++) { double + gamma, Sa; register ssize_t @@ -992,13 +993,14 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image, 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); } diff --git a/MagickCore/feature.c b/MagickCore/feature.c index 3823935ff..340d836bf 100644 --- a/MagickCore/feature.c +++ b/MagickCore/feature.c @@ -48,6 +48,7 @@ #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" @@ -296,7 +297,7 @@ MagickExport Image *CannyEdgeImage(const Image *image,const double radius, 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. */ diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index a5ccb0bec..a16bcc383 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -1412,7 +1412,8 @@ static void ExportLongLongPixel(Image *image,const RectangleInfo *roi, 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); } } @@ -2222,6 +2223,7 @@ MagickExport MagickRealType GetPixelInfoIntensity(const Image *restrict image, { MagickRealType blue, + gamma, green, red, intensity; @@ -2232,9 +2234,12 @@ MagickExport MagickRealType GetPixelInfoIntensity(const Image *restrict image, 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: @@ -2356,15 +2361,17 @@ MagickExport MagickRealType GetPixelIntensity(const Image *restrict image, { 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: