From aa7a225ef86a5a5d01215f9e5993f8e65c3df0d2 Mon Sep 17 00:00:00 2001 From: cristy Date: Wed, 15 Aug 2012 12:19:00 +0000 Subject: [PATCH] --- MagickCore/channel.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/MagickCore/channel.c b/MagickCore/channel.c index d2d67e7ee..bd96b55cf 100644 --- a/MagickCore/channel.c +++ b/MagickCore/channel.c @@ -651,6 +651,7 @@ MagickExport Image *SeparateImage(const Image *image, return((Image *) NULL); } separate_image->matte=MagickFalse; + (void) SetImageColorspace(separate_image,GRAYColorspace,exception); /* Separate image. */ @@ -697,6 +698,9 @@ MagickExport Image *SeparateImage(const Image *image, SetPixelChannel(separate_image,GrayPixelChannel,0,q); for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { + double + pixel; + PixelChannel channel; @@ -708,7 +712,11 @@ MagickExport Image *SeparateImage(const Image *image, if ((traits == UndefinedPixelTrait) || (GetChannelBit(channel_type,channel) == 0)) continue; - SetPixelChannel(separate_image,GrayPixelChannel,p[i],q); + pixel=p[i]; + if (IssRGBColorspace(image->colorspace) != MagickFalse) + pixel=InversesRGBCompandor(pixel); + SetPixelChannel(separate_image,GrayPixelChannel,ClampToQuantum(pixel), + q); } p+=GetPixelChannels(image); q+=GetPixelChannels(separate_image); @@ -730,10 +738,6 @@ MagickExport Image *SeparateImage(const Image *image, } separate_view=DestroyCacheView(separate_view); image_view=DestroyCacheView(image_view); - if (IssRGBColorspace(image->colorspace) == MagickFalse) - (void) SetImageColorspace(separate_image,GRAYColorspace,exception); - else - (void) TransformImageColorspace(separate_image,GRAYColorspace,exception); return(separate_image); } -- 2.40.0