From 768165d3e31b0f43f545a993a531cca0e7aa57b7 Mon Sep 17 00:00:00 2001 From: cristy Date: Mon, 9 Apr 2012 15:01:35 +0000 Subject: [PATCH] --- MagickCore/decorate.c | 3 +++ MagickCore/fx.c | 33 +++++++++++++++------------------ MagickCore/image.c | 6 ++++++ MagickCore/paint.c | 5 +++++ 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c index 6092acecf..fde090785 100644 --- a/MagickCore/decorate.c +++ b/MagickCore/decorate.c @@ -229,6 +229,9 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info, frame_image=DestroyImage(frame_image); return((Image *) NULL); } + if ((IsGrayColorspace(image->colorspace) != MagickFalse) && + (IsPixelInfoGray(&image->matte_color) == MagickFalse)) + SetImageColorspace(frame_image,sRGBColorspace,exception); if ((frame_image->border_color.matte != MagickFalse) && (frame_image->matte == MagickFalse)) (void) SetImageAlpha(frame_image,OpaqueAlpha,exception); diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 3ac1c15e4..e5ee27378 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -680,23 +680,6 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); - colorize_image=CloneImage(image,image->columns,image->rows,MagickTrue, - exception); - if (colorize_image == (Image *) NULL) - return((Image *) NULL); - if (SetImageStorageClass(colorize_image,DirectClass,exception) == MagickFalse) - { - colorize_image=DestroyImage(colorize_image); - return((Image *) NULL); - } - if ((colorize->matte != MagickFalse) && - (colorize_image->matte == MagickFalse)) - (void) SetImageAlpha(colorize_image,OpaqueAlpha,exception); - if (blend == (const char *) NULL) - return(colorize_image); - /* - Determine RGB values of the fill color for pixel - */ GetPixelInfo(image,&fill_color); flags=ParseGeometry(blend,&geometry_info); fill_color.red=geometry_info.rho; @@ -717,9 +700,23 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend, if ((flags & ChiValue) != 0) fill_color.alpha=geometry_info.chi; } + colorize_image=CloneImage(image,image->columns,image->rows,MagickTrue, + exception); + if (colorize_image == (Image *) NULL) + return((Image *) NULL); + if (SetImageStorageClass(colorize_image,DirectClass,exception) == MagickFalse) + { + colorize_image=DestroyImage(colorize_image); + return((Image *) NULL); + } if ((IsGrayColorspace(image->colorspace) != MagickFalse) && (IsPixelInfoGray(&fill_color) != MagickFalse)) - colorize_image->colorspace=sRGBColorspace; + SetImageColorspace(colorize_image,sRGBColorspace,exception); + if ((colorize->matte != MagickFalse) && + (colorize_image->matte == MagickFalse)) + (void) SetImageAlpha(colorize_image,OpaqueAlpha,exception); + if (blend == (const char *) NULL) + return(colorize_image); /* Colorize DirectClass image. */ diff --git a/MagickCore/image.c b/MagickCore/image.c index 03f621fa1..31be7c741 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -516,6 +516,9 @@ MagickExport Image *AppendImages(const Image *images, append_view=AcquireCacheView(append_image); for (n=0; n < (MagickOffsetType) number_images; n++) { + if ((IsGrayColorspace(image->colorspace) != MagickFalse) && + (IsGrayColorspace(append_image->colorspace) != MagickFalse)) + (void) TransformImageColorspace(append_image,sRGBColorspace,exception); SetGeometry(append_image,&geometry); GravityAdjustGeometry(image->columns,image->rows,image->gravity,&geometry); if (stack != MagickFalse) @@ -2334,6 +2337,9 @@ MagickExport MagickBooleanType SetImageBackgroundColor(Image *image, assert(image->signature == MagickSignature); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); + if ((IsGrayColorspace(image->colorspace) != MagickFalse) && + (IsPixelInfoGray(&image->background_color) == MagickFalse)) + (void) TransformImageColorspace(image,sRGBColorspace,exception); if ((image->background_color.matte != MagickFalse) && (image->matte == MagickFalse)) (void) SetImageAlpha(image,OpaqueAlpha,exception); diff --git a/MagickCore/paint.c b/MagickCore/paint.c index 1b6c56199..3b70e53ec 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -171,6 +171,8 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, return(MagickFalse); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); + if (IsGrayColorspace(image->colorspace) != MagickFalse) + (void) TransformImageColorspace(image,sRGBColorspace,exception); if ((target->matte != MagickFalse) && (image->matte == MagickFalse)) (void) SetImageAlpha(image,OpaqueAlpha,exception); /* @@ -770,6 +772,9 @@ MagickExport MagickBooleanType OpaquePaintImage(Image *image, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); + if ((IsGrayColorspace(image->colorspace) != MagickFalse) && + (IsPixelInfoGray(fill) != MagickFalse)) + (void) TransformImageColorspace(image,sRGBColorspace,exception); if ((fill->matte != MagickFalse) && (image->matte == MagickFalse)) (void) SetImageAlpha(image,OpaqueAlpha,exception); /* -- 2.50.1