44#include "wand/studio.h"
45#include "wand/MagickWand.h"
46#include "wand/mogrify-private.h"
47#include "magick/string-private.h"
48#include "magick/image-private.h"
49#include "magick/xwindow-private.h"
94static MagickBooleanType ImportUsage(
void)
98 " -debug events display copious debugging information\n"
99 " -help print program options\n"
100 " -list type print a list of supported option arguments\n"
101 " -log format format of debugging information\n"
102 " -version print version information",
104 " -annotate geometry text\n"
105 " annotate the image with text\n"
106 " -colors value preferred number of colors in the image\n"
107 " -crop geometry preferred size and location of the cropped image\n"
108 " -encipher filename convert plain pixels to cipher pixels\n"
109 " -geometry geometry preferred size or location of the image\n"
110 " -help print program options\n"
111 " -monochrome transform image to black and white\n"
112 " -negate replace every pixel with its complementary color \n"
113 " -quantize colorspace reduce colors in this colorspace\n"
114 " -resize geometry resize the image\n"
115 " -rotate degrees apply Paeth rotation to the image\n"
116 " -strip strip image of all profiles and comments\n"
117 " -thumbnail geometry create a thumbnail of the image\n"
118 " -transparent color make this color transparent within the image\n"
119 " -trim trim image edges\n"
120 " -type type image type",
122 " -adjoin join images into a single multi-image file\n"
123 " -border include window border in the output image\n"
124 " -channel type apply option to select image channels\n"
125 " -colorspace type alternate image colorspace\n"
126 " -comment string annotate image with comment\n"
127 " -compress type type of pixel compression when writing the image\n"
128 " -define format:option\n"
129 " define one or more image format options\n"
130 " -density geometry horizontal and vertical density of the image\n"
131 " -depth value image depth\n"
132 " -descend obtain image by descending window hierarchy\n"
133 " -display server X server to contact\n"
134 " -dispose method layer disposal method\n"
135 " -dither method apply error diffusion to image\n"
136 " -delay value display the next image after pausing\n"
137 " -encipher filename convert plain pixels to cipher pixels\n"
138 " -endian type endianness (MSB or LSB) of the image\n"
139 " -encoding type text encoding type\n"
140 " -filter type use this filter when resizing an image\n"
141 " -format \"string\" output formatted image characteristics\n"
142 " -frame include window manager frame\n"
143 " -gravity direction which direction to gravitate towards\n"
144 " -identify identify the format and characteristics of the image\n"
145 " -interlace type None, Line, Plane, or Partition\n"
146 " -interpolate method pixel color interpolation method\n"
147 " -label string assign a label to an image\n"
148 " -limit type value Area, Disk, Map, or Memory resource limit\n"
149 " -monitor monitor progress\n"
150 " -page geometry size and location of an image canvas\n"
151 " -pause seconds seconds delay between snapshots\n"
152 " -pointsize value font point size\n"
153 " -quality value JPEG/MIFF/PNG compression level\n"
154 " -quiet suppress all warning messages\n"
155 " -regard-warnings pay attention to warning messages\n"
156 " -repage geometry size and location of an image canvas\n"
157 " -respect-parentheses settings remain in effect until parenthesis boundary\n"
158 " -sampling-factor geometry\n"
159 " horizontal and vertical sampling factor\n"
160 " -scene value image scene number\n"
161 " -screen select image from root window\n"
162 " -seed value seed a new sequence of pseudo-random numbers\n"
163 " -set property value set an image property\n"
164 " -silent operate silently, i.e. don't ring any bells \n"
165 " -snaps value number of screen snapshots\n"
166 " -support factor resize support: > 1.0 is blurry, < 1.0 is sharp\n"
167 " -synchronize synchronize image to storage device\n"
168 " -taint declare the image as modified\n"
169 " -transparent-color color\n"
170 " transparent color\n"
171 " -treedepth value color tree depth\n"
172 " -verbose print detailed information about the image\n"
173 " -virtual-pixel method\n"
174 " Constant, Edge, Mirror, or Tile\n"
175 " -window id select window with this id or name";
177 ListMagickVersion(stdout);
178 (void) printf(
"Usage: %s [options ...] [ file ]\n",GetClientName());
179 (void) printf(
"\nImage Settings:\n");
180 (void) puts(settings);
181 (void) printf(
"\nImage Operators:\n");
182 (void) puts(operators);
183 (void) printf(
"\nMiscellaneous Options:\n");
184 (void) puts(miscellaneous);
186 "\nBy default, 'file' is written in the MIFF image format. To\n");
188 "specify a particular image format, precede the filename with an image\n");
190 "format name and a colon (i.e. ps:image) or specify the image type as\n");
192 "the filename suffix (i.e. image.ps). Specify 'file' as '-' for\n");
193 (void) printf(
"standard input or output.\n");
197WandExport MagickBooleanType ImportImageCommand(ImageInfo *image_info,
198 int argc,
char **argv,
char **wand_unused(metadata),ExceptionInfo *exception)
200#if defined(MAGICKCORE_X11_DELEGATE)
201#define DestroyImport() \
203 XDestroyResourceInfo(&resource_info); \
204 if (display != (Display *) NULL) \
206 XCloseDisplay(display); \
207 display=(Display *) NULL; \
209 DestroyImageStack(); \
210 if (target_window != (char *) NULL) \
211 target_window=DestroyString(target_window); \
212 for (i=0; i < (ssize_t) argc; i++) \
213 argv[i]=DestroyString(argv[i]); \
214 argv=(char **) RelinquishMagickMemory(argv); \
216#define ThrowImportException(asperity,tag,option) \
218 char *message = GetExceptionMessage(errno); \
219 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag, \
220 "`%s'",option == (char *) NULL ? message : option); \
221 message=DestroyString(message); \
223 return(MagickFalse); \
225#define ThrowImportInvalidArgumentException(option,argument) \
227 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
228 "InvalidArgument","`%s': %s",option,argument); \
230 return(MagickFalse); \
247 image_stack[MaxImageStackDepth+1];
277 wand_unreferenced(metadata);
282 assert(image_info != (ImageInfo *) NULL);
283 assert(image_info->signature == MagickCoreSignature);
284 assert(exception != (ExceptionInfo *) NULL);
285 if (IsEventLogging() != MagickFalse)
286 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"...");
290 if ((LocaleCompare(
"version",option+1) == 0) ||
291 (LocaleCompare(
"-version",option+1) == 0))
293 ListMagickVersion(stdout);
297 display=(Display *) NULL;
301 option=(
char *) NULL;
303 resource_database=(XrmDatabase) NULL;
304 respect_parenthesis=MagickFalse;
305 (void) memset(&resource_info,0,
sizeof(resource_info));
306 server_name=(
char *) NULL;
309 target_window=(
char *) NULL;
313 ReadCommandlLine(argc,&argv);
314 status=ExpandFilenames(&argc,&argv);
315 if (status == MagickFalse)
316 ThrowImportException(ResourceLimitError,
"MemoryAllocationFailed",
318 for (i=1; i < (ssize_t) argc; i++)
324 if (IsCommandOption(option) == MagickFalse)
326 if (LocaleCompare(
"display",option+1) == 0)
332 if (i == (ssize_t) argc)
333 ThrowImportException(OptionError,
"MissingArgument",option);
336 if ((LocaleCompare(
"help",option+1) == 0) ||
337 (LocaleCompare(
"-help",option+1) == 0))
340 return(ImportUsage());
346 display=XOpenDisplay(server_name);
347 if (display == (Display *) NULL)
348 ThrowImportException(XServerError,
"UnableToOpenXServer",
349 XDisplayName(server_name));
350 (void) XSetErrorHandler(XError);
351 resource_database=XGetResourceDatabase(display,GetClientName());
352 XGetImportInfo(&ximage_info);
353 XGetResourceInfo(image_info,resource_database,GetClientName(),
355 quantize_info=resource_info.quantize_info;
356 resource_value=XGetResourceInstance(resource_database,GetClientName(),
358 ximage_info.borders=IsMagickTrue(resource_value);
359 resource_value=XGetResourceInstance(resource_database,GetClientName(),
361 resource_info.delay=(
unsigned int) StringToUnsignedLong(resource_value);
362 image_info->density=XGetResourceInstance(resource_database,GetClientName(),
363 "density",(
char *) NULL);
364 resource_value=XGetResourceInstance(resource_database,GetClientName(),
366 ximage_info.descend=IsMagickTrue(resource_value);
367 resource_value=XGetResourceInstance(resource_database,GetClientName(),
369 ximage_info.frame=IsMagickTrue(resource_value);
370 resource_value=XGetResourceInstance(resource_database,GetClientName(),
372 image_info->interlace=UndefinedInterlace;
373 if (LocaleCompare(
"None",resource_value) == 0)
374 image_info->interlace=NoInterlace;
375 if (LocaleCompare(
"Line",resource_value) == 0)
376 image_info->interlace=LineInterlace;
377 if (LocaleCompare(
"Plane",resource_value) == 0)
378 image_info->interlace=PlaneInterlace;
379 if (LocaleCompare(
"Partition",resource_value) == 0)
380 image_info->interlace=PartitionInterlace;
381 if (image_info->interlace == UndefinedInterlace)
382 ThrowImportException(OptionError,
"Unrecognized interlace type",
384 image_info->page=XGetResourceInstance(resource_database,GetClientName(),
385 "pageGeometry",(
char *) NULL);
386 resource_value=XGetResourceInstance(resource_database,GetClientName(),
388 resource_info.pause=(
unsigned int) StringToUnsignedLong(resource_value);
389 resource_value=XGetResourceInstance(resource_database,GetClientName(),
391 image_info->quality=StringToUnsignedLong(resource_value);
392 resource_value=XGetResourceInstance(resource_database,GetClientName(),
394 ximage_info.screen=IsMagickTrue(resource_value);
395 resource_value=XGetResourceInstance(resource_database,GetClientName(),
397 ximage_info.silent=IsMagickTrue(resource_value);
398 resource_value=XGetResourceInstance(resource_database,GetClientName(),
400 image_info->verbose=IsMagickTrue(resource_value);
401 resource_value=XGetResourceInstance(resource_database,GetClientName(),
403 quantize_info->dither=IsMagickTrue(resource_value);
406 filename=(
char *) NULL;
410 for (i=1; i < (ssize_t) argc; i++)
413 if (LocaleCompare(option,
"(") == 0)
415 FireImageStack(MagickFalse,MagickTrue,pend);
416 if (k == MaxImageStackDepth)
417 ThrowImportException(OptionError,
"ParenthesisNestedTooDeeply",
422 if (LocaleCompare(option,
")") == 0)
424 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
426 ThrowImportException(OptionError,
"UnableToParseExpression",option);
430 if (IsCommandOption(option) == MagickFalse)
441 FireImageStack(MagickFalse,MagickFalse,pend);
443 if (target_window != (
char *) NULL)
444 (void) CopyMagickString(image_info->filename,target_window,
446 for (scene=0; scene < (size_t) MagickMax(snapshots,1); scene++)
448 MagickDelay(1000*resource_info.pause);
449 images=XImportImage(image_info,&ximage_info);
450 status&=(images != (Image *) NULL) &&
451 (exception->severity < ErrorException);
452 if (images == (Image *) NULL)
454 (void) CopyMagickString(images->filename,filename,MaxTextExtent);
455 (void) CopyMagickString(images->magick,
"PS",MaxTextExtent);
457 AppendImageStack(images);
461 pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
466 if (LocaleCompare(
"adjoin",option+1) == 0)
468 if (LocaleCompare(
"annotate",option+1) == 0)
473 if (i == (ssize_t) argc)
474 ThrowImportException(OptionError,
"MissingArgument",option);
475 if (IsGeometry(argv[i]) == MagickFalse)
476 ThrowImportInvalidArgumentException(option,argv[i]);
477 if (i == (ssize_t) argc)
478 ThrowImportException(OptionError,
"MissingArgument",option);
482 ThrowImportException(OptionError,
"UnrecognizedOption",option);
486 if (LocaleCompare(
"border",option+1) == 0)
488 (void) CopyMagickString(argv[i]+1,
"sans",MaxTextExtent);
489 ximage_info.borders=(*option ==
'-') ? MagickTrue : MagickFalse;
492 if (LocaleCompare(
"bordercolor",option+1) == 0)
497 if (i == (ssize_t) argc)
498 ThrowImportException(OptionError,
"MissingArgument",option);
501 ThrowImportException(OptionError,
"UnrecognizedOption",option);
505 if (LocaleCompare(
"cache",option+1) == 0)
510 if (i == (ssize_t) argc)
511 ThrowImportException(OptionError,
"MissingArgument",option);
512 if (IsGeometry(argv[i]) == MagickFalse)
513 ThrowImportInvalidArgumentException(option,argv[i]);
516 if (LocaleCompare(
"channel",option+1) == 0)
524 if (i == (ssize_t) argc)
525 ThrowImportException(OptionError,
"MissingArgument",option);
526 channel=ParseChannelOption(argv[i]);
528 ThrowImportException(OptionError,
"UnrecognizedChannelType",
532 if (LocaleCompare(
"colors",option+1) == 0)
534 quantize_info->number_colors=0;
538 if (i == (ssize_t) argc)
539 ThrowImportException(OptionError,
"MissingArgument",option);
540 if (IsGeometry(argv[i]) == MagickFalse)
541 ThrowImportInvalidArgumentException(option,argv[i]);
542 quantize_info->number_colors=StringToUnsignedLong(argv[i]);
545 if (LocaleCompare(
"colorspace",option+1) == 0)
553 if (i == (ssize_t) argc)
554 ThrowImportException(OptionError,
"MissingArgument",option);
555 colorspace=ParseCommandOption(MagickColorspaceOptions,MagickFalse,
558 ThrowImportException(OptionError,
"UnrecognizedColorspace",
562 if (LocaleCompare(
"comment",option+1) == 0)
567 if (i == (ssize_t) argc)
568 ThrowImportException(OptionError,
"MissingArgument",option);
569 status=SetImageOption(image_info,
"comment",argv[i]);
570 if (status == MagickFalse)
571 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
574 if (LocaleCompare(
"compress",option+1) == 0)
582 if (i == (ssize_t) argc)
583 ThrowImportException(OptionError,
"MissingArgument",option);
584 compress=ParseCommandOption(MagickCompressOptions,MagickFalse,
587 ThrowImportException(OptionError,
"UnrecognizedImageCompression",
591 if (LocaleCompare(
"concurrent",option+1) == 0)
593 if (LocaleCompare(
"crop",option+1) == 0)
598 if (i == (ssize_t) argc)
599 ThrowImportException(OptionError,
"MissingArgument",option);
600 if (IsGeometry(argv[i]) == MagickFalse)
601 ThrowImportInvalidArgumentException(option,argv[i]);
604 ThrowImportException(OptionError,
"UnrecognizedOption",option);
608 if (LocaleCompare(
"debug",option+1) == 0)
616 if (i == (ssize_t) argc)
617 ThrowImportException(OptionError,
"MissingArgument",option);
618 event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]);
620 ThrowImportException(OptionError,
"UnrecognizedEventType",argv[i]);
621 (void) SetLogEventMask(argv[i]);
624 if (LocaleCompare(
"define",option+1) == 0)
627 if (i == (ssize_t) argc)
628 ThrowImportException(OptionError,
"MissingArgument",option);
634 define=GetImageOption(image_info,argv[i]);
635 if (define == (
char *) NULL)
636 ThrowImportException(OptionError,
"NoSuchOption",argv[i]);
641 if (LocaleCompare(
"delay",option+1) == 0)
646 if (i == (ssize_t) argc)
647 ThrowImportException(OptionError,
"MissingArgument",option);
648 if (IsGeometry(argv[i]) == MagickFalse)
649 ThrowImportInvalidArgumentException(option,argv[i]);
650 status=SetImageOption(image_info,
"delay",argv[i]);
651 if (status == MagickFalse)
652 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
655 if (LocaleCompare(
"density",option+1) == 0)
660 if (i == (ssize_t) argc)
661 ThrowImportException(OptionError,
"MissingArgument",option);
662 if (IsGeometry(argv[i]) == MagickFalse)
663 ThrowImportInvalidArgumentException(option,argv[i]);
666 if (LocaleCompare(
"depth",option+1) == 0)
671 if (i == (ssize_t) argc)
672 ThrowImportException(OptionError,
"MissingArgument",option);
673 if (IsGeometry(argv[i]) == MagickFalse)
674 ThrowImportInvalidArgumentException(option,argv[i]);
677 if (LocaleCompare(
"descend",option+1) == 0)
679 ximage_info.descend=(*option ==
'-') ? MagickTrue : MagickFalse;
682 if (LocaleCompare(
"display",option+1) == 0)
687 if (i == (ssize_t) argc)
688 ThrowImportException(OptionError,
"MissingArgument",option);
691 if (LocaleCompare(
"dispose",option+1) == 0)
699 if (i == (ssize_t) argc)
700 ThrowImportException(OptionError,
"MissingArgument",option);
701 dispose=ParseCommandOption(MagickDisposeOptions,MagickFalse,argv[i]);
703 ThrowImportException(OptionError,
"UnrecognizedDisposeMethod",
707 if (LocaleCompare(
"dither",option+1) == 0)
712 quantize_info->dither=MagickFalse;
716 if (i == (ssize_t) argc)
717 ThrowImportException(OptionError,
"MissingArgument",option);
718 method=ParseCommandOption(MagickDitherOptions,MagickFalse,argv[i]);
720 ThrowImportException(OptionError,
"UnrecognizedDitherMethod",
722 quantize_info->dither=MagickTrue;
723 quantize_info->dither_method=(DitherMethod) method;
726 if (LocaleCompare(
"duration",option+1) == 0)
731 if (i == (ssize_t) argc)
732 ThrowImportException(OptionError,
"MissingArgument",option);
733 if (IsGeometry(argv[i]) == MagickFalse)
734 ThrowImportInvalidArgumentException(option,argv[i]);
737 ThrowImportException(OptionError,
"UnrecognizedOption",option);
741 if (LocaleCompare(
"encipher",option+1) == 0)
746 if (i == (ssize_t) argc)
747 ThrowImportException(OptionError,
"MissingArgument",option);
750 if (LocaleCompare(
"encoding",option+1) == 0)
755 if (i == (ssize_t) argc)
756 ThrowImportException(OptionError,
"MissingArgument",option);
759 if (LocaleCompare(
"endian",option+1) == 0)
767 if (i == (ssize_t) argc)
768 ThrowImportException(OptionError,
"MissingArgument",option);
769 endian=ParseCommandOption(MagickEndianOptions,MagickFalse,
772 ThrowImportException(OptionError,
"UnrecognizedEndianType",
776 ThrowImportException(OptionError,
"UnrecognizedOption",option);
780 if (LocaleCompare(
"filter",option+1) == 0)
788 if (i == (ssize_t) argc)
789 ThrowImportException(OptionError,
"MissingArgument",option);
790 filter=ParseCommandOption(MagickFilterOptions,MagickFalse,argv[i]);
792 ThrowImportException(OptionError,
"UnrecognizedImageFilter",
796 if (LocaleCompare(
"frame",option+1) == 0)
798 (void) CopyMagickString(argv[i]+1,
"sans0",MaxTextExtent);
799 ximage_info.frame=(*option ==
'-') ? MagickTrue : MagickFalse;
802 if (LocaleCompare(
"format",option+1) == 0)
807 if (i == (ssize_t) argc)
808 ThrowImportException(OptionError,
"MissingArgument",option);
811 ThrowImportException(OptionError,
"UnrecognizedOption",option);
815 if (LocaleCompare(
"geometry",option+1) == 0)
820 if (i == (ssize_t) argc)
821 ThrowImportException(OptionError,
"MissingArgument",option);
822 if (IsGeometry(argv[i]) == MagickFalse)
823 ThrowImportInvalidArgumentException(option,argv[i]);
826 if (LocaleCompare(
"gravity",option+1) == 0)
834 if (i == (ssize_t) argc)
835 ThrowImportException(OptionError,
"MissingArgument",option);
836 gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,argv[i]);
838 ThrowImportException(OptionError,
"UnrecognizedGravityType",
842 ThrowImportException(OptionError,
"UnrecognizedOption",option);
846 if (LocaleCompare(
"help",option+1) == 0)
848 ThrowImportException(OptionError,
"UnrecognizedOption",option);
852 if (LocaleCompare(
"identify",option+1) == 0)
854 if (LocaleCompare(
"interlace",option+1) == 0)
862 if (i == (ssize_t) argc)
863 ThrowImportException(OptionError,
"MissingArgument",option);
864 interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse,
867 ThrowImportException(OptionError,
"UnrecognizedInterlaceType",
871 if (LocaleCompare(
"interpolate",option+1) == 0)
879 if (i == (ssize_t) argc)
880 ThrowImportException(OptionError,
"MissingArgument",option);
881 interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse,
884 ThrowImportException(OptionError,
"UnrecognizedInterpolateMethod",
888 ThrowImportException(OptionError,
"UnrecognizedOption",option);
892 if (LocaleCompare(
"label",option+1) == 0)
897 if (i == (ssize_t) argc)
898 ThrowImportException(OptionError,
"MissingArgument",option);
899 status=SetImageOption(image_info,
"label",argv[i]);
900 if (status == MagickFalse)
901 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
904 if (LocaleCompare(
"limit",option+1) == 0)
918 if (i == (ssize_t) argc)
919 ThrowImportException(OptionError,
"MissingArgument",option);
920 resource=ParseCommandOption(MagickResourceOptions,MagickFalse,
923 ThrowImportException(OptionError,
"UnrecognizedResourceType",
926 if (i == (ssize_t) argc)
927 ThrowImportException(OptionError,
"MissingArgument",option);
928 value=StringToDouble(argv[i],&p);
930 if ((p == argv[i]) && (LocaleCompare(
"unlimited",argv[i]) != 0))
931 ThrowImportInvalidArgumentException(option,argv[i]);
934 if (LocaleCompare(
"list",option+1) == 0)
942 if (i == (ssize_t) argc)
943 ThrowImportException(OptionError,
"MissingArgument",option);
944 list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]);
946 ThrowImportException(OptionError,
"UnrecognizedListType",argv[i]);
947 status=MogrifyImageInfo(image_info,(
int) (i-j+1),(
const char **)
950 return(status == 0 ? MagickFalse : MagickTrue);
952 if (LocaleCompare(
"log",option+1) == 0)
957 if ((i == (ssize_t) argc) || (strchr(argv[i],
'%') == (
char *) NULL))
958 ThrowImportException(OptionError,
"MissingArgument",option);
961 ThrowImportException(OptionError,
"UnrecognizedOption",option);
965 if (LocaleCompare(
"monitor",option+1) == 0)
967 if (LocaleCompare(
"monochrome",option+1) == 0)
971 quantize_info->number_colors=2;
972 quantize_info->colorspace=GRAYColorspace;
975 ThrowImportException(OptionError,
"UnrecognizedOption",option);
979 if (LocaleCompare(
"negate",option+1) == 0)
981 ThrowImportException(OptionError,
"UnrecognizedOption",option);
985 if (LocaleCompare(
"page",option+1) == 0)
990 if (i == (ssize_t) argc)
991 ThrowImportException(OptionError,
"MissingArgument",option);
992 status=SetImageOption(image_info,
"page",argv[i]);
993 if (status == MagickFalse)
994 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
997 if (LocaleCompare(
"pause",option+1) == 0)
999 resource_info.pause=0;
1003 if (i == (ssize_t) argc)
1004 ThrowImportException(OptionError,
"MissingArgument",option);
1005 if (IsGeometry(argv[i]) == MagickFalse)
1006 ThrowImportInvalidArgumentException(option,argv[i]);
1007 resource_info.pause=(
unsigned int) StringToUnsignedLong(argv[i]);
1010 if (LocaleCompare(
"ping",option+1) == 0)
1012 if (LocaleCompare(
"pointsize",option+1) == 0)
1017 if (i == (ssize_t) argc)
1018 ThrowImportException(OptionError,
"MissingArgument",option);
1019 if (IsGeometry(argv[i]) == MagickFalse)
1020 ThrowImportInvalidArgumentException(option,argv[i]);
1023 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1027 if (LocaleCompare(
"quality",option+1) == 0)
1032 if (i == (ssize_t) argc)
1033 ThrowImportException(OptionError,
"MissingArgument",option);
1034 if (IsGeometry(argv[i]) == MagickFalse)
1035 ThrowImportInvalidArgumentException(option,argv[i]);
1038 if (LocaleCompare(
"quantize",option+1) == 0)
1046 if (i == (ssize_t) argc)
1047 ThrowImportException(OptionError,
"MissingArgument",option);
1048 colorspace=ParseCommandOption(MagickColorspaceOptions,
1049 MagickFalse,argv[i]);
1051 ThrowImportException(OptionError,
"UnrecognizedColorspace",
1055 if (LocaleCompare(
"quiet",option+1) == 0)
1057 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1061 if (LocaleCompare(
"regard-warnings",option+1) == 0)
1063 if (LocaleCompare(
"repage",option+1) == 0)
1068 if (i == (ssize_t) argc)
1069 ThrowImportException(OptionError,
"MissingArgument",option);
1070 if (IsGeometry(argv[i]) == MagickFalse)
1071 ThrowImportInvalidArgumentException(option,argv[i]);
1074 if (LocaleCompare(
"resize",option+1) == 0)
1079 if (i == (ssize_t) argc)
1080 ThrowImportException(OptionError,
"MissingArgument",option);
1081 if (IsGeometry(argv[i]) == MagickFalse)
1082 ThrowImportInvalidArgumentException(option,argv[i]);
1085 if (LocaleNCompare(
"respect-parentheses",option+1,17) == 0)
1087 respect_parenthesis=(*option ==
'-') ? MagickTrue : MagickFalse;
1090 if (LocaleCompare(
"rotate",option+1) == 0)
1093 if (i == (ssize_t) argc)
1094 ThrowImportException(OptionError,
"MissingArgument",option);
1095 if (IsGeometry(argv[i]) == MagickFalse)
1096 ThrowImportInvalidArgumentException(option,argv[i]);
1099 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1103 if (LocaleCompare(
"sampling-factor",option+1) == 0)
1108 if (i == (ssize_t) argc)
1109 ThrowImportException(OptionError,
"MissingArgument",option);
1110 if (IsGeometry(argv[i]) == MagickFalse)
1111 ThrowImportInvalidArgumentException(option,argv[i]);
1114 if (LocaleCompare(
"scene",option+1) == 0)
1119 if (i == (ssize_t) argc)
1120 ThrowImportException(OptionError,
"MissingArgument",option);
1121 if (IsGeometry(argv[i]) == MagickFalse)
1122 ThrowImportInvalidArgumentException(option,argv[i]);
1125 if (LocaleCompare(
"set",option+1) == 0)
1128 if (i == (ssize_t) argc)
1129 ThrowImportException(OptionError,
"MissingArgument",option);
1133 if (i == (ssize_t) argc)
1134 ThrowImportException(OptionError,
"MissingArgument",option);
1137 if (LocaleCompare(
"screen",option+1) == 0)
1139 ximage_info.screen=(*option ==
'-') ? MagickTrue : MagickFalse;
1142 if (LocaleCompare(
"seed",option+1) == 0)
1147 if (i == (ssize_t) argc)
1148 ThrowImportException(OptionError,
"MissingArgument",option);
1149 if (IsGeometry(argv[i]) == MagickFalse)
1150 ThrowImportInvalidArgumentException(option,argv[i]);
1153 if (LocaleCompare(
"silent",option+1) == 0)
1155 ximage_info.silent=(*option ==
'-') ? MagickTrue : MagickFalse;
1158 if (LocaleCompare(
"snaps",option+1) == 0)
1160 (void) CopyMagickString(argv[i]+1,
"sans",MaxTextExtent);
1162 if (i == (ssize_t) argc)
1163 ThrowImportException(OptionError,
"MissingArgument",option);
1164 if (IsGeometry(argv[i]) == MagickFalse)
1165 ThrowImportInvalidArgumentException(option,argv[i]);
1166 snapshots=(ssize_t) StringToLong(argv[i]);
1169 if (LocaleCompare(
"strip",option+1) == 0)
1171 if (LocaleCompare(
"support",option+1) == 0)
1176 if (LocaleCompare(
"synchronize",option+1) == 0)
1178 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1182 if (LocaleCompare(
"taint",option+1) == 0)
1184 if (LocaleCompare(
"thumbnail",option+1) == 0)
1189 if (i == (ssize_t) argc)
1190 ThrowImportException(OptionError,
"MissingArgument",option);
1191 if (IsGeometry(argv[i]) == MagickFalse)
1192 ThrowImportInvalidArgumentException(option,argv[i]);
1195 if (LocaleCompare(
"transparent",option+1) == 0)
1198 if (i == (ssize_t) argc)
1199 ThrowImportException(OptionError,
"MissingArgument",option);
1202 if (LocaleCompare(
"transparent-color",option+1) == 0)
1207 if (i == (ssize_t) argc)
1208 ThrowImportException(OptionError,
"MissingArgument",option);
1211 if (LocaleCompare(
"treedepth",option+1) == 0)
1213 quantize_info->tree_depth=0;
1217 if (i == (ssize_t) argc)
1218 ThrowImportException(OptionError,
"MissingArgument",option);
1219 if (IsGeometry(argv[i]) == MagickFalse)
1220 ThrowImportInvalidArgumentException(option,argv[i]);
1221 quantize_info->tree_depth=StringToUnsignedLong(argv[i]);
1224 if (LocaleCompare(
"trim",option+1) == 0)
1226 if (LocaleCompare(
"type",option+1) == 0)
1234 if (i == (ssize_t) argc)
1235 ThrowImportException(OptionError,
"MissingArgument",option);
1236 type=ParseCommandOption(MagickTypeOptions,MagickFalse,argv[i]);
1238 ThrowImportException(OptionError,
"UnrecognizedImageType",argv[i]);
1241 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1246 if (i == (ssize_t) argc)
1247 ThrowImportException(OptionError,
"MissingArgument",option);
1248 (void) CloneString(&target_window,argv[i]);
1253 if (LocaleCompare(
"verbose",option+1) == 0)
1255 if ((LocaleCompare(
"version",option+1) == 0) ||
1256 (LocaleCompare(
"-version",option+1) == 0))
1258 ListMagickVersion(stdout);
1261 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1266 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1268 fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) &
1269 FireOptionFlag) == 0 ? MagickFalse : MagickTrue;
1270 if (fire != MagickFalse)
1271 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
1274 ThrowImportException(OptionError,
"UnbalancedParenthesis",argv[i]);
1275 if (i-- != (ssize_t) argc)
1276 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[i]);
1277 if (image == (Image *) NULL)
1278 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[argc-1]);
1279 FinalizeImageSettings(image_info,image,MagickTrue);
1280 status&=WriteImages(image_info,image,filename,exception);
1282 return(status != 0 ? MagickTrue : MagickFalse);
1284 magick_unreferenced(argc);
1285 magick_unreferenced(argv);
1286 magick_unreferenced(metadata);
1288 (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
1289 "DelegateLibrarySupportNotBuiltIn",
"`%s' (X11)",image_info->filename);
1290 return(ImportUsage());