]> granicus.if.org Git - imagemagick/commitdiff
https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32667
authorCristy <urban-warrior@imagemagick.org>
Tue, 12 Sep 2017 11:02:58 +0000 (07:02 -0400)
committerCristy <urban-warrior@imagemagick.org>
Tue, 12 Sep 2017 11:04:07 +0000 (07:04 -0400)
MagickCore/statistic.c

index ae4ecaf0b4bf8c787544cf95a4bc560981fbcb17..16b9694a1a19a4a0498acc4da8af8f4118067b18 100644 (file)
@@ -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)