From e0b9b8f4be5f9c30ee9638b35dc5db8181e4f13e Mon Sep 17 00:00:00 2001 From: cristy Date: Thu, 28 Mar 2013 12:39:39 +0000 Subject: [PATCH] --- MagickCore/option.c | 2 ++ MagickWand/convert.c | 2 +- MagickWand/mogrify.c | 43 ++++++++++++++++++++++++++++---- MagickWand/operation.c | 15 ++++++++++- PerlMagick/quantum/quantum.xs.in | 11 ++++++++ utilities/convert.1 | 1 + utilities/convert.1.in | 1 + utilities/mogrify.1 | 1 + utilities/mogrify.1.in | 1 + 9 files changed, 70 insertions(+), 7 deletions(-) diff --git a/MagickCore/option.c b/MagickCore/option.c index df4855600..fa7c0d074 100644 --- a/MagickCore/option.c +++ b/MagickCore/option.c @@ -424,6 +424,8 @@ static const OptionInfo { "-geometry", 1L, SimpleOperatorFlag, MagickFalse }, { "+gravity", 0L, ImageInfoOptionFlag | DrawInfoOptionFlag, MagickFalse }, { "-gravity", 1L, ImageInfoOptionFlag | DrawInfoOptionFlag, MagickFalse }, + { "+grayscale", 1L, SimpleOperatorFlag, MagickTrue }, + { "-grayscale", 1L, SimpleOperatorFlag, MagickFalse }, { "+green-primary", 0L, ImageInfoOptionFlag, MagickFalse }, { "-green-primary", 1L, ImageInfoOptionFlag, MagickFalse }, { "+hald-clut", 0L, DeprecateOptionFlag | FireOptionFlag, MagickTrue }, diff --git a/MagickWand/convert.c b/MagickWand/convert.c index a90593935..8e900c1de 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -222,7 +222,6 @@ static MagickBooleanType ConvertUsage(void) "-interpolative-resize geometry", " resize image using interpolation", "-lat geometry local adaptive thresholding", - "-layers method optimize, merge, or compare image layers", "-level value adjust the level of image contrast", "-level-colors color,color", " level image with the given colors", @@ -324,6 +323,7 @@ static MagickBooleanType ConvertUsage(void) "-flatten flatten a sequence of images", "-fx expression apply mathematical expression to an image channel(s)", "-hald-clut apply a Hald color lookup table to the image", + "-layers method optimize, merge, or compare image layers", "-morph value morph an image sequence", "-mosaic create a mosaic from an image sequence", "-poly terms build a polynomial from the image sequence and the corresponding", diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index f473ef783..d9067a049 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -1753,6 +1753,20 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, MagickGravityOptions,MagickFalse,argv[i+1]); break; } + if (LocaleCompare("grayscale",option+1) == 0) + { + (void) SyncImageSettings(mogrify_info,*image,exception); + if (*option == '+') + { + (void) TransformImageColorspace(*image,sRGBColorspace, + exception); + break; + } + (*image)->intensity=(PixelIntensityMethod) ParseCommandOption( + MagickPixelIntensityOptions,MagickFalse,argv[i+1]); + (void) TransformImageColorspace(*image,GRAYColorspace,exception); + break; + } break; } case 'h': @@ -3297,7 +3311,6 @@ static MagickBooleanType MogrifyUsage(void) "-interpolative-resize geometry", " resize image using interpolation", "-lat geometry local adaptive thresholding", - "-layers method optimize, merge, or compare image layers", "-level value adjust the level of image contrast", "-level-colors color,color", " level image with the given colors", @@ -3398,6 +3411,7 @@ static MagickBooleanType MogrifyUsage(void) "-flatten flatten a sequence of images", "-fx expression apply mathematical expression to an image channel(s)", "-hald-clut apply a Hald color lookup table to the image", + "-layers method optimize, merge, or compare image layers", "-morph value morph an image sequence", "-mosaic create a mosaic from an image sequence", "-poly terms build a polynomial from the image sequence and the corresponding", @@ -4731,12 +4745,30 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, i++; if (i == (ssize_t) argc) ThrowMogrifyException(OptionError,"MissingArgument",option); - gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,argv[i]); + gravity=ParseCommandOption(MagickGravityOptions,MagickFalse, + argv[i]); if (gravity < 0) ThrowMogrifyException(OptionError,"UnrecognizedGravityType", argv[i]); break; } + if (LocaleCompare("grayscale",option+1) == 0) + { + ssize_t + type; + + if (*option == '+') + break; + i++; + if (i == (ssize_t) (argc-1)) + ThrowMogrifyException(OptionError,"MissingArgument",option); + type=ParseCommandOption(MagickPixelIntensityOptions,MagickFalse, + argv[i]); + if (type < 0) + ThrowMogrifyException(OptionError,"UnrecognizedIntensityMethod", + argv[i]); + break; + } if (LocaleCompare("green-primary",option+1) == 0) { if (*option == '+') @@ -4786,10 +4818,11 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, i++; if (i == (ssize_t) (argc-1)) ThrowMogrifyException(OptionError,"MissingArgument",option); - intensity=ParseCommandOption(MagickPixelIntensityOptions,MagickFalse,argv[i]); + intensity=ParseCommandOption(MagickPixelIntensityOptions, + MagickFalse,argv[i]); if (intensity < 0) - ThrowMogrifyException(OptionError,"UnrecognizedPixelIntensityMethod", - argv[i]); + ThrowMogrifyException(OptionError, + "UnrecognizedPixelIntensityMethod",argv[i]); break; } if (LocaleCompare("intent",option+1) == 0) diff --git a/MagickWand/operation.c b/MagickWand/operation.c index 6d4f8bddd..1d904ac99 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -2050,7 +2050,7 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand, That seems to be a little strange! */ (void) TransformImageColorspace(_image, - IfNormalOp ? _image_info->colorspace : RGBColorspace, + IfNormalOp ? _image_info->colorspace : sRGBColorspace, _exception); break; } @@ -2445,6 +2445,19 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand, _image->filter,_exception); break; } + if (LocaleCompare("distort",option+1) == 0) + { + parse = ParseCommandOption(MagickPixelIntensityOptions, + MagickFalse,arg1); + if ( parse < 0 ) + CLIWandExceptArgBreak(OptionError,"UnrecognizedIntensityMethod", + option,arg1); + _image->intensity = (PixelIntensityMethod) parse; + (void) TransformImageColorspace(_image, + IfNormalOp ? _image_info->colorspace : GRAYColorspace, + _exception); + break; + } CLIWandExceptionBreak(OptionError,"UnrecognizedOption",option); } case 'i': diff --git a/PerlMagick/quantum/quantum.xs.in b/PerlMagick/quantum/quantum.xs.in index e5a82dd1c..2b76eb531 100644 --- a/PerlMagick/quantum/quantum.xs.in +++ b/PerlMagick/quantum/quantum.xs.in @@ -542,6 +542,7 @@ static struct {"channel", MagickChannelOptions} } }, { "Poly", { {"terms", ArrayReference}, {"channel", MagickChannelOptions} } } + { "Grayscale", { {"method", MagickNoiseOptions} } }, }; static SplayTreeInfo @@ -7362,6 +7363,8 @@ Mogrify(ref,...) PerceptibleImage = 272 Poly = 273 PolyImage = 274 + Grayscale = 275 + GrayscaleImage = 276 MogrifyRegion = 666 PPCODE: { @@ -10923,6 +10926,14 @@ Mogrify(ref,...) terms=(double *) RelinquishMagickMemory(terms); break; } + case 137: /* Grayscale */ + { + if (attribute_flag[0] != 0) + image->intensity=(PixelIntensityMethod) + argument_list[0].integer_reference; + (void) TransformImageColorspace(image,GRAYColorspace,exception); + break; + } } if (next != (Image *) NULL) (void) CatchImageException(next); diff --git a/utilities/convert.1 b/utilities/convert.1 index bac169b9d..42eefeb0f 100644 --- a/utilities/convert.1 +++ b/utilities/convert.1 @@ -150,6 +150,7 @@ Image Operators: \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image + \-grayscale method convert image to grayscale \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center diff --git a/utilities/convert.1.in b/utilities/convert.1.in index 831964a23..b9a4f9352 100644 --- a/utilities/convert.1.in +++ b/utilities/convert.1.in @@ -150,6 +150,7 @@ Image Operators: \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image + \-grayscale method convert image to grayscale \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center diff --git a/utilities/mogrify.1 b/utilities/mogrify.1 index 4b7678dda..f3e1ac23d 100644 --- a/utilities/mogrify.1 +++ b/utilities/mogrify.1 @@ -153,6 +153,7 @@ Image Operators: \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image + \-grayscale method convert image to grayscale \-ift implements the inverse discrete Fourier transform (DFT) \-help print program options \-identify identify the format and characteristics of the image diff --git a/utilities/mogrify.1.in b/utilities/mogrify.1.in index 1ef26479b..4314037c5 100644 --- a/utilities/mogrify.1.in +++ b/utilities/mogrify.1.in @@ -153,6 +153,7 @@ Image Operators: \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image + \-grayscale method convert image to grayscale \-ift implements the inverse discrete Fourier transform (DFT) \-help print program options \-identify identify the format and characteristics of the image -- 2.40.0