From: Cristy Date: Tue, 12 Sep 2017 11:02:58 +0000 (-0400) Subject: https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32667 X-Git-Tag: 7.0.7-2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e46ad9dd95d68c1c8c630e6d27338ae3f57d5c7;p=imagemagick https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32667 --- diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index ae4ecaf0b..16b9694a1 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -416,6 +416,31 @@ static double ApplyEvaluateOperator(RandomInfo *random_info,const Quantum pixel, return(result); } +static Image *AcquireImageCanvas(const Image *images,ExceptionInfo *exception) +{ + const Image + *p, + *q; + + size_t + columns, + rows; + + q=images; + columns=images->columns; + rows=images->rows; + for (p=images; p != (Image *) NULL; p=p->next) + { + if (p->number_channels > q->number_channels) + q=p; + if (p->columns > columns) + columns=p->columns; + if (p->rows > rows) + rows=p->rows; + } + return(CloneImage(q,columns,rows,MagickTrue,exception)); +} + MagickExport Image *EvaluateImages(const Image *images, const MagickEvaluateOperator op,ExceptionInfo *exception) { @@ -456,8 +481,7 @@ MagickExport Image *EvaluateImages(const Image *images, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); - image=CloneImage(images,images->columns,images->rows,MagickTrue, - exception); + image=AcquireImageCanvas(images,exception); if (image == (Image *) NULL) return((Image *) NULL); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) @@ -2187,8 +2211,7 @@ MagickExport Image *PolynomialImage(const Image *images, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); - image=CloneImage(images,images->columns,images->rows,MagickTrue, - exception); + image=AcquireImageCanvas(images,exception); if (image == (Image *) NULL) return((Image *) NULL); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)