% April 1992 %
% %
% %
-% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
\
message=GetExceptionMessage(errno); \
(void) ThrowMagickException(exception,GetMagickModule(),severity, \
- tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context,message); \
+ tag == (const char *) NULL ? "unknown" : tag,"'%s': %s",context,message); \
message=DestroyString(message); \
}
\f
static MagickBooleanType ConvertUsage(void)
{
static const char
+ *channel_operators[]=
+ {
+ "-channel-fx expression",
+ " exchange, extract, or transfer one or more image channels",
+ "-separate separate an image channel into a grayscale image",
+ (char *) NULL
+ },
*miscellaneous[]=
{
"-debug events display copious debugging information",
+ "-distribute-cache port",
+ " distributed pixel cache spanning one or more servers",
"-help print program options",
"-list type print a list of supported option arguments",
"-log format format of debugging information",
"-cdl filename color correct with a color decision list",
"-charcoal radius simulate a charcoal drawing",
"-chop geometry remove pixels from the image interior",
- "-clamp restrict pixel range from 0 to the quantum depth",
- "-clip clip along the first path from the 8BIM profile",
- "-clip-mask filename associate a clip mask with the image",
- "-clip-path id clip along a named path from the 8BIM profile",
+ "-clamp keep pixel values in range (0-QuantumRange)",
"-colorize value colorize the image with the fill color",
"-color-matrix matrix apply color correction to the image",
"-contrast enhance or reduce the image contrast",
"-contrast-stretch geometry",
- " improve contrast by `stretching' the intensity range",
+ " improve contrast by 'stretching' the intensity range",
"-convolve coefficients",
" apply a convolution kernel to the image",
"-cycle amount cycle the image colormap",
"-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",
"-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",
"-linear-stretch geometry",
- " improve contrast by `stretching with saturation'",
+ " improve contrast by 'stretching with saturation'",
"-liquid-rescale geometry",
" rescale image with seam-carving",
"-median geometry apply a median filter to the image",
- "-mode geometry make each pixel the 'predominant color' of the neighborhood",
+ "-mode geometry make each pixel the 'predominant color' of the",
+ " neighborhood",
"-modulate value vary the brightness, saturation, and hue",
"-monochrome transform image to black and white",
"-morphology method kernel",
" add a noise pattern to the image with specific",
" amplitudes",
"-paint radius simulate an oil painting",
+ "-perceptible epsilon",
+ " pixel value less than |epsilon| become epsilon or",
+ " -epsilon",
"-polaroid angle simulate a Polaroid picture",
"-posterize levels reduce the image to a limited number of color levels",
"-profile filename add, delete, or apply an image profile",
"-shave geometry shave pixels from the image edges",
"-shear geometry slide one edge of the image along the X or Y axis",
"-sigmoidal-contrast geometry",
- " increase the contrast without saturating highlights or shadows",
+ " increase the contrast without saturating highlights or",
+ " shadows",
"-sketch geometry simulate a pencil sketch",
"-solarize threshold negate all pixels above the threshold level",
"-sparse-color method args",
"-splice geometry splice the background color into the image",
"-spread radius displace image pixels by a random amount",
"-statistic type geometry",
- " replace each pixel with corresponding statistic from the neighborhood",
+ " replace each pixel with corresponding statistic from the",
+ " neighborhood",
"-strip strip image of all profiles and comments",
"-swirl degrees swirl image pixels about the center",
"-threshold value threshold the image",
"-clut apply a color lookup table to the image",
"-coalesce merge a sequence of images",
"-combine combine a sequence of images",
+ "-compare mathematically and visually annotate the difference between an image and its reconstruction",
+ "-complex operator perform complex mathematics on an image sequence",
"-composite composite image",
"-crop geometry cut out a rectangular region of the image",
"-deconstruct break down an image sequence into constituent parts",
"-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",
+ " terms (coefficients and degree pairs).",
"-print string interpret string and print to console",
"-process arguments process the image with a custom image filter",
- "-separate separate an image channel into a grayscale image",
"-smush geometry smush an image sequence together",
"-write filename write images to this file",
(char *) NULL
"-bordercolor color border color",
"-caption string assign a caption to an image",
"-channel type apply option to select image channels",
+ "-clip clip along the first path from the 8BIM profile",
+ "-clip-mask filename associate a clip mask with the image",
+ "-clip-path id clip along a named path from the 8BIM profile",
"-colors value preferred number of colors in the image",
"-colorspace type alternate image colorspace",
"-comment string annotate image with comment",
"-encoding type text encoding type",
"-endian type endianness (MSB or LSB) of the image",
"-family name render text with this font family",
+ "-features distance analyze image features (e.g. contrast, correlation)",
"-fill color color to use when filling a graphic primitive",
"-filter type use this filter when resizing an image",
"-font name render text with this font",
"-fuzz distance colors within this distance are considered equal",
"-gravity type horizontal and vertical text placement",
"-green-primary point chromaticity green primary point",
+ "-intensity method method to generate an intensity value from a pixel",
"-intent type type of rendering intent when managing the image color",
"-interlace type type of image interlacing scheme",
"-interline-spacing value",
"-limit type value pixel cache resource limit",
"-loop iterations add Netscape loop extension to your GIF animation",
"-mask filename associate a mask with the image",
+ "-matte store matte channel if the image has one",
"-mattecolor color frame color",
"-monitor monitor progress",
"-orient type image orientation",
"-stroke color graphic primitive stroke color",
"-strokewidth value graphic primitive stroke width",
"-style type render text with this font style",
+ "-support factor resize support: > 1.0 is blurry, < 1.0 is sharp",
"-synchronize synchronize image to storage device",
"-taint declare the image as modified",
"-texture filename name of texture to tile onto the image background",
const char
**p;
- (void) printf("Version: %s\n",GetMagickVersion((size_t *) NULL));
- (void) printf("Copyright: %s\n",GetMagickCopyright());
- (void) printf("Features: %s\n\n",GetMagickFeatures());
+ ListMagickVersion(stdout);
(void) printf("Usage: %s [options ...] file [ [options ...] "
"file ...] [options ...] file\n",GetClientName());
(void) printf("\nImage Settings:\n");
(void) printf("\nImage Operators:\n");
for (p=operators; *p != (char *) NULL; p++)
(void) printf(" %s\n",*p);
+ (void) printf("\nImage Channel Operators:\n");
+ for (p=channel_operators; *p != (char *) NULL; p++)
+ (void) printf(" %s\n",*p);
(void) printf("\nImage Sequence Operators:\n");
for (p=sequence_operators; *p != (char *) NULL; p++)
(void) printf(" %s\n",*p);
for (p=miscellaneous; *p != (char *) NULL; p++)
(void) printf(" %s\n",*p);
(void) printf(
- "\nBy default, the image format of `file' is determined by its magic\n");
+ "\nBy default, the image format of 'file' is determined by its magic\n");
(void) printf(
"number. To specify a particular image format, precede the filename\n");
(void) printf(
#define ThrowConvertInvalidArgumentException(option,argument) \
{ \
(void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
- "InvalidArgument","`%s': %s",option,argument); \
+ "InvalidArgument","'%s': %s",option,argument); \
DestroyConvert(); \
return(MagickFalse); \
}
if ((LocaleCompare("version",option+1) == 0) ||
(LocaleCompare("-version",option+1) == 0))
{
- (void) FormatLocaleFile(stdout,"Version: %s\n",
- GetMagickVersion((size_t *) NULL));
- (void) FormatLocaleFile(stdout,"Copyright: %s\n",
- GetMagickCopyright());
- (void) FormatLocaleFile(stdout,"Features: %s\n\n",
- GetMagickFeatures());
+ ListMagickVersion(stdout);
return(MagickFalse);
}
}
filename=argv[i];
if ((LocaleCompare(filename,"--") == 0) && (i < (ssize_t) (argc-1)))
filename=argv[++i];
- (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
if (image_info->ping != MagickFalse)
- images=PingImages(image_info,exception);
+ images=PingImages(image_info,filename,exception);
else
- images=ReadImages(image_info,exception);
+ images=ReadImages(image_info,filename,exception);
status&=(images != (Image *) NULL) &&
(exception->severity < ErrorException);
if (images == (Image *) NULL)
i++;
if (i == (ssize_t) (argc-1))
ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
if (LocaleCompare("alpha",option+1) == 0)
i++;
if (i == (ssize_t) argc)
ThrowConvertException(OptionError,"MissingArgument",option);
- type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+ type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
if (type < 0)
- ThrowConvertException(OptionError,"UnrecognizedAlphaChannelType",
+ ThrowConvertException(OptionError,"UnrecognizedAlphaChannelOption",
argv[i]);
break;
}
argv[i]);
break;
}
+ if (LocaleCompare("channel-fx",option+1) == 0)
+ {
+ ssize_t
+ channel;
+
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ channel=ParsePixelChannelOption(argv[i]);
+ if (channel < 0)
+ ThrowConvertException(OptionError,"UnrecognizedChannelType",
+ argv[i]);
+ break;
+ }
if (LocaleCompare("charcoal",option+1) == 0)
{
if (*option == '+')
if (k != 0)
clone_images=image_stack[k-1].image;
if (clone_images == (Image *) NULL)
- ThrowConvertException(ImageError,"ImageSequenceRequired",option);
+ ThrowConvertException(ImageError,"UnableToCloneImage",option);
FireImageStack(MagickTrue,MagickTrue,MagickTrue);
if (*option == '+')
clone_images=CloneImages(clone_images,"-1",exception);
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
+ if (LocaleCompare("compare",option+1) == 0)
+ break;
+ if (LocaleCompare("complex",option+1) == 0)
+ {
+ ssize_t
+ operator;
+
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) argc)
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ operator=ParseCommandOption(MagickComplexOptions,MagickFalse,
+ argv[i]);
+ if (operator < 0)
+ ThrowConvertException(OptionError,"UnrecognizedComplexOperator",
+ argv[i]);
+ break;
+ }
if (LocaleCompare("compose",option+1) == 0)
{
ssize_t
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
+ if (LocaleCompare("features",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("fft",option+1) == 0)
break;
if (LocaleCompare("fill",option+1) == 0)
argv[i]);
break;
}
+ if (LocaleCompare("grayscale",option+1) == 0)
+ {
+ ssize_t
+ method;
+
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ method=ParseCommandOption(MagickPixelIntensityOptions,MagickFalse,
+ argv[i]);
+ if (method < 0)
+ ThrowConvertException(OptionError,"UnrecognizedIntensityMethod",
+ argv[i]);
+ break;
+ }
if (LocaleCompare("green-primary",option+1) == 0)
{
if (*option == '+')
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("intensity",option+1) == 0)
+ {
+ ssize_t
+ intensity;
+
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ intensity=ParseCommandOption(MagickPixelIntensityOptions,
+ MagickFalse,argv[i]);
+ if (intensity < 0)
+ ThrowConvertException(OptionError,"UnrecognizedIntensityMethod",
+ argv[i]);
+ break;
+ }
if (LocaleCompare("intent",option+1) == 0)
{
ssize_t
i++;
if (i == (ssize_t) (argc-1))
ThrowConvertException(OptionError,"MissingArgument",option);
- intent=ParseCommandOption(MagickIntentOptions,MagickFalse,
- argv[i]);
+ intent=ParseCommandOption(MagickIntentOptions,MagickFalse,argv[i]);
if (intent < 0)
- ThrowConvertException(OptionError,"UnrecognizedIntentType",
- argv[i]);
+ ThrowConvertException(OptionError,"UnrecognizedIntentType",argv[i]);
break;
}
if (LocaleCompare("interlace",option+1) == 0)
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
- if (LocaleCompare("linewidth",option+1) == 0)
- {
- if (*option == '+')
- break;
- i++;
- if (i == (ssize_t) (argc-1))
- ThrowConvertException(OptionError,"MissingArgument",option);
- if (IsGeometry(argv[i]) == MagickFalse)
- ThrowConvertInvalidArgumentException(option,argv[i]);
- break;
- }
- if (LocaleCompare("liquid-rescale",option+1) == 0)
- {
- i++;
- if (i == (ssize_t) (argc-1))
- ThrowConvertException(OptionError,"MissingArgument",option);
- if (IsGeometry(argv[i]) == MagickFalse)
- ThrowConvertInvalidArgumentException(option,argv[i]);
- break;
- }
if (LocaleCompare("limit",option+1) == 0)
{
char
i++;
if (i == (ssize_t) argc)
ThrowConvertException(OptionError,"MissingArgument",option);
- value=InterpretLocaleValue(argv[i],&p);
+ value=StringToDouble(argv[i],&p);
(void) value;
if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0))
ThrowConvertInvalidArgumentException(option,argv[i]);
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("liquid-rescale",option+1) == 0)
+ {
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("list",option+1) == 0)
{
ssize_t
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("metric",option+1) == 0)
+ {
+ ssize_t
+ type;
+
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) argc)
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ type=ParseCommandOption(MagickMetricOptions,MagickTrue,argv[i]);
+ if (type < 0)
+ ThrowConvertException(OptionError,"UnrecognizedMetricType",
+ argv[i]);
+ break;
+ }
if (LocaleCompare("minimum",option+1) == 0)
break;
if (LocaleCompare("mode",option+1) == 0)
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("perceptible",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("ping",option+1) == 0)
break;
if (LocaleCompare("pointsize",option+1) == 0)
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("poly",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("posterize",option+1) == 0)
{
if (*option == '+')
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
- if (LocaleCompare("recolor",option+1) == 0)
- {
- if (*option == '+')
- break;
- i++;
- if (i == (ssize_t) (argc-1))
- ThrowConvertException(OptionError,"MissingArgument",option);
- if (IsGeometry(argv[i]) == MagickFalse)
- ThrowConvertInvalidArgumentException(option,argv[i]);
- break;
- }
if (LocaleCompare("red-primary",option+1) == 0)
{
if (*option == '+')
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
- if (LocaleCompare("thumbnail",option+1) == 0)
+ if (LocaleCompare("threshold",option+1) == 0)
{
if (*option == '+')
break;
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
- if (LocaleCompare("threshold",option+1) == 0)
+ if (LocaleCompare("thumbnail",option+1) == 0)
{
if (*option == '+')
break;
if ((LocaleCompare("version",option+1) == 0) ||
(LocaleCompare("-version",option+1) == 0))
{
- (void) FormatLocaleFile(stdout,"Version: %s\n",
- GetMagickVersion((size_t *) NULL));
- (void) FormatLocaleFile(stdout,"Copyright: %s\n",
- GetMagickCopyright());
- (void) FormatLocaleFile(stdout,"Features: %s\n\n",
- GetMagickFeatures());
+ ListMagickVersion(stdout);
break;
}
if (LocaleCompare("view",option+1) == 0)
ThrowConvertException(OptionError,"UnbalancedParenthesis",argv[i]);
if (i-- != (ssize_t) (argc-1))
ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
- if (image == (Image *) NULL)
- ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
FinalizeImageSettings(image_info,image,MagickTrue);
if (image == (Image *) NULL)
+ ThrowConvertException(OptionError,"NoImagesDefined",argv[argc-1]);
+ if (IsCommandOption(argv[argc-1]))
+ ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
+ if (LocaleCompare(" ",argv[argc-1])==0) /* common line continuation error */
ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
status&=WriteImages(image_info,image,argv[argc-1],exception);
if (metadata != (char **) NULL)