From 1ca877c27bc1cab1f355b2bf67dffafa97cfc396 Mon Sep 17 00:00:00 2001 From: Cristy Date: Sat, 19 Dec 2015 16:32:55 -0500 Subject: [PATCH] Support -define connected-components:remove define --- MagickCore/distort.c | 7 +++++++ MagickCore/vision.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/MagickCore/distort.c b/MagickCore/distort.c index e5c5bd72e..af78f6c40 100644 --- a/MagickCore/distort.c +++ b/MagickCore/distort.c @@ -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); } diff --git a/MagickCore/vision.c b/MagickCore/vision.c index 64a5db992..aca2dc732 100644 --- a/MagickCore/vision.c +++ b/MagickCore/vision.c @@ -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) -- 2.49.0