From: cristy Date: Sat, 14 Apr 2012 16:29:34 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5806 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eeebdde7f673840985fc9fc8451f20356254ad05;p=imagemagick --- diff --git a/MagickCore/image.c b/MagickCore/image.c index c6fb3eed3..072e587dc 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -433,11 +433,7 @@ MagickExport Image *AppendImages(const Image *images, #define AppendImageTag "Append/Image" CacheView - *append_view, - *image_view; - - const Image - *image; + *append_view; Image *append_image; @@ -475,12 +471,11 @@ MagickExport Image *AppendImages(const Image *images, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); - image=images; - matte=image->matte; + matte=images->matte; number_images=1; - width=image->columns; - height=image->rows; - next=GetNextImageInList(image); + width=images->columns; + height=images->rows; + next=GetNextImageInList(images); for ( ; next != (Image *) NULL; next=GetNextImageInList(next)) { if (next->matte != MagickFalse) @@ -500,7 +495,7 @@ MagickExport Image *AppendImages(const Image *images, /* Append images. */ - append_image=CloneImage(image,width,height,MagickTrue,exception); + append_image=CloneImage(images,width,height,MagickTrue,exception); if (append_image == (Image *) NULL) return((Image *) NULL); if (SetImageStorageClass(append_image,DirectClass,exception) == MagickFalse) @@ -513,12 +508,20 @@ MagickExport Image *AppendImages(const Image *images, status=MagickTrue; x_offset=0; y_offset=0; + next=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); + CacheView + *image_view; + + Image + *image; + + image=CloneImage(next,0,0,MagickTrue,exception); + if (image == (Image *) NULL) + break; + (void) TransformImageColorspace(image,append_image->colorspace,exception); SetGeometry(append_image,&geometry); GravityAdjustGeometry(image->columns,image->rows,image->gravity,&geometry); if (stack != MagickFalse) @@ -575,9 +578,6 @@ MagickExport Image *AppendImages(const Image *images, status=MagickFalse; } image_view=DestroyCacheView(image_view); - proceed=SetImageProgress(image,AppendImageTag,n,number_images); - if (proceed == MagickFalse) - break; if (stack == MagickFalse) { x_offset+=(ssize_t) image->columns; @@ -588,7 +588,11 @@ MagickExport Image *AppendImages(const Image *images, x_offset=0; y_offset+=(ssize_t) image->rows; } - image=GetNextImageInList(image); + image=DestroyImage(image); + proceed=SetImageProgress(append_image,AppendImageTag,n,number_images); + if (proceed == MagickFalse) + break; + next=GetNextImageInList(next); } append_view=DestroyCacheView(append_view); if (status == MagickFalse)