]> granicus.if.org Git - imagemagick/commitdiff
Support -define connected-components:remove define
authorCristy <urban-warrior@imagemagick.org>
Sat, 19 Dec 2015 21:32:55 +0000 (16:32 -0500)
committerCristy <urban-warrior@imagemagick.org>
Sat, 19 Dec 2015 21:32:55 +0000 (16:32 -0500)
MagickCore/distort.c
MagickCore/vision.c

index e5c5bd72eaebf203fef9ae24af0f0ab8d9e40d5e..af78f6c40911975665e4340183b5d475d235ec2a 100644 (file)
@@ -1572,6 +1572,13 @@ MagickExport Image *DistortResizeImage(const Image *image,
   tmp_image=resize_image;
   resize_image=CropImage(tmp_image,&crop_area,exception);
   tmp_image=DestroyImage(tmp_image);
+  if (resize_image != (Image *) NULL)
+    {
+      resize_image->alpha_trait=image->alpha_trait;
+      resize_image->compose=image->compose;
+      resize_image->page.width=0;
+      resize_image->page.height=0;
+    }
   return(resize_image);
 }
 \f
index 64a5db992ee90f60e84975207d8312ca6821e517..aca2dc732e29d69390b3f770432f5003a71f1a23 100644 (file)
@@ -551,6 +551,41 @@ MagickExport Image *ConnectedComponentsImage(const Image *image,
         component_image->colormap[i].alpha=object[i].color.alpha;
       }
     }
+  artifact=GetImageArtifact(image,"connected-components:remove");
+  if (artifact != (const char *) NULL)
+    {
+      char
+        *p;
+
+      long
+        first,
+        last,
+        step;
+
+      /*
+        Remove these objects (make them transparent).
+      */
+      for (p=(char *) artifact; *p != '\0';)
+      {
+        while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ','))
+          p++;
+        first=strtol(p,&p,10);
+        if (first < 0)
+          first+=(long) component_image->colors;
+        last=first;
+        while (isspace((int) ((unsigned char) *p)) != 0)
+          p++;
+        if (*p == '-')
+          {
+            last=strtol(p+1,&p,10);
+            if (last < 0)
+              last+=(long) component_image->colors;
+          }
+        component_image->alpha_trait=BlendPixelTrait;
+        for (step=first > last ? -1 : 1; first != (last+step); first+=step)
+          component_image->colormap[first].alpha=TransparentAlpha;
+      }
+    }
   (void) SyncImage(component_image,exception);
   artifact=GetImageArtifact(image,"connected-components:verbose");
   if (IsStringTrue(artifact) != MagickFalse)