]> granicus.if.org Git - imagemagick/commitdiff
Added MagickLevelizeImage to MagickWand (#1545)
authorEric McConville <erichasemail@gmail.com>
Mon, 15 Apr 2019 11:56:27 +0000 (06:56 -0500)
committerImageMagick <urban-warrior@users.noreply.github.com>
Mon, 15 Apr 2019 11:56:27 +0000 (07:56 -0400)
MagickWand/magick-image.c
MagickWand/magick-image.h

index f6cf1e27297b74a519c768f18449948189748f8c..a8b9db28a73dd0e85dca8835cd13cfdf07bbe43e 100644 (file)
@@ -6497,6 +6497,55 @@ WandExport MagickBooleanType MagickLevelImage(MagickWand *wand,
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   M a g i c k L e v e l i z e I m a g e                                     %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  MagickLevelizeImage() applies the reversed MagickLevelImage(). It compresses
+%  the full range of color values, so that they lie between the given black and
+%  white points.  Gamma is applied before the values are mapped.  It can be
+%  used to de-contrast a greyscale image to the exact levels specified.
+%
+%  The format of the MagickLevelizeImage method is:
+%
+%      MagickBooleanType MagickLevelizeImage(MagickWand *wand,
+%        const double black_point, const double white_point,const double gamma)
+%
+%  A description of each parameter follows:
+%
+%    o wand: the magick wand.
+%
+%    o black_point: The level to map zero (black) to.
+%
+%    o white_point: The level to map QuantumRange (white) to.
+%
+%    o gamma: adjust gamma by this factor before mapping values.
+%
+*/
+WandExport MagickBooleanType MagickLevelizeImage(MagickWand *wand,
+  const double black_point,const double gamma,const double white_point)
+{
+  MagickBooleanType
+    status;
+
+  assert(wand != (MagickWand *) NULL);
+  assert(wand->signature == MagickWandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  if (wand->images == (Image *) NULL)
+    ThrowWandException(WandError,"ContainsNoImages",wand->name);
+  status=LevelizeImage(wand->images,black_point,white_point,gamma,
+    wand->exception);
+  return(status);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   M a g i c k L i n e a r S t r e t c h I m a g e                           %
 %                                                                             %
 %                                                                             %
index d6db943e362bfcf848f455db6e174cf31624af63..e10d5efcf58d6ab9d6d601e4adb2d4c5bdd4d57a 100644 (file)
@@ -187,6 +187,7 @@ extern WandExport MagickBooleanType
     const MagickBooleanType),
   MagickLabelImage(MagickWand *,const char *),
   MagickLevelImage(MagickWand *,const double,const double,const double),
+  MagickLevelizeImage(MagickWand *,const double,const double,const double),
   MagickLinearStretchImage(MagickWand *,const double,const double),
   MagickLiquidRescaleImage(MagickWand *,const size_t,const size_t,const double,
     const double),