From: Cristy Date: Sun, 6 Dec 2015 23:47:24 +0000 (-0500) Subject: Don't return all white for monochrome quantization X-Git-Tag: 7.0.1-0~455 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0b0d73548a9ac52da461ba38ac114dbb2a7828dc;p=imagemagick Don't return all white for monochrome quantization --- diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index 2ffda4b6b..313badc54 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -505,12 +505,11 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info, */ if ((cube_info->quantize_info->colorspace != UndefinedColorspace) && (cube_info->quantize_info->colorspace != CMYKColorspace)) - (void) TransformImageColorspace((Image *) image, - cube_info->quantize_info->colorspace,exception); + (void) TransformImageColorspace(image,cube_info->quantize_info->colorspace, + exception); else if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse) - (void) TransformImageColorspace((Image *) image,sRGBColorspace, - exception); + (void) TransformImageColorspace(image,sRGBColorspace,exception); if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename);; @@ -650,25 +649,19 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info, double intensity; - register PixelInfo - *magick_restrict q; - - register ssize_t - i; - /* Monochrome image. */ - q=image->colormap; - for (i=0; i < (ssize_t) image->colors; i++) - { - intensity=(double) (GetPixelInfoLuma(q) < (QuantumRange/2.0) ? 0 : - QuantumRange); - q->red=intensity; - q->green=q->red; - q->blue=q->red; - q++; - } + intensity=0.0; + if (GetPixelInfoLuma(image->colormap+0) > + GetPixelInfoLuma(image->colormap+1)) + intensity=(double) QuantumRange; + image->colormap[0].red=intensity; + image->colormap[0].green=intensity; + image->colormap[0].blue=intensity; + image->colormap[1].red=(double) QuantumRange-intensity; + image->colormap[1].green=(double) QuantumRange-intensity; + image->colormap[1].blue=(double) QuantumRange-intensity; } (void) SyncImage(image,exception); if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&