From: cristy Date: Sun, 2 Jun 2013 17:55:06 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~3616 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=06d9c9067ab2889db86c9c0ffe8d1ef72561dd58;p=imagemagick --- diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index 8775b6fdc..fd615fb9b 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -2047,7 +2047,8 @@ MagickExport MagickBooleanType GrayscaleImage(Image *image, } case LightnessPixelIntensityMethod: { - intensity=MagickMin(MagickMin(red,green),blue); + intensity=(MagickMin(MagickMin(red,green),blue)+ + MagickMax(MagickMax(red,green),blue))/2.0; break; } case MSPixelIntensityMethod: @@ -2058,22 +2059,46 @@ MagickExport MagickBooleanType GrayscaleImage(Image *image, } case Rec601LumaPixelIntensityMethod: { + if (image->colorspace == RGBColorspace) + { + red=EncodePixelGamma(red); + green=EncodePixelGamma(green); + blue=EncodePixelGamma(blue); + } intensity=0.298839*red+0.586811*green+0.114350*blue; break; } case Rec601LuminancePixelIntensityMethod: { + if (image->colorspace == sRGBColorspace) + { + red=DecodePixelGamma(red); + green=DecodePixelGamma(green); + blue=DecodePixelGamma(blue); + } intensity=0.298839*red+0.586811*green+0.114350*blue; break; } case Rec709LumaPixelIntensityMethod: - case UndefinedPixelIntensityMethod: + default: { + if (image->colorspace == RGBColorspace) + { + red=EncodePixelGamma(red); + green=EncodePixelGamma(green); + blue=EncodePixelGamma(blue); + } intensity=0.21260f*red+0.71520f*green+0.07220f*blue; break; } case Rec709LuminancePixelIntensityMethod: { + if (image->colorspace == sRGBColorspace) + { + red=DecodePixelGamma(red); + green=DecodePixelGamma(green); + blue=DecodePixelGamma(blue); + } intensity=0.21260f*red+0.71520f*green+0.07220f*blue; break; } @@ -2083,13 +2108,11 @@ MagickExport MagickBooleanType GrayscaleImage(Image *image, blue*blue)/sqrt(3.0)); break; } - default: - break; } SetPixelGray(image,ClampToQuantum(intensity),q); q+=GetPixelChannels(image); } - if( IfMagickFalse(SyncCacheViewAuthenticPixels(image_view,exception)) ) + if (IfMagickFalse(SyncCacheViewAuthenticPixels(image_view,exception))) status=MagickFalse; if (image->progress_monitor != (MagickProgressMonitor) NULL) {