gm(1) General Commands Manual gm(1) NAME gm - command-line utility to create, edit, compare, convert, or display images SYNOPSIS gm animate [ options ... ] file [ [ options ... ] file ... ] gm batch [ options ... ] [ script ] gm benchmark [ options ... ] subcommand gm compare [ options ... ] reference-image [ options ... ] compare- image [ options ... ] gm composite [ options ... ] change-image base-image [ mask-image ] output-image gm conjure [ options ] script.msl [ [ options ] script.msl ] gm convert [ [ options ... ] [ input-file ... ] [ options ... ] ] output-file gm display [ options ... ] file ... [ [options ... ]file ... ] gm identify file [ file ... ] gm import [ options ... ] file gm mogrify [ options ... ] file ... gm montage [ options ... ] file [ [ options ... ] file ... ] output- file gm time subcommand gm version DESCRIPTION GraphicsMagick's gm provides a suite of utilities for creating, comparing, converting, editing, and displaying images. All of the utilities are provided as sub-commands of a single gm executable. The gm executable returns the exit code 0 to indicate success, or 1 to indicate failure: animate displays an animation (e.g. a GIF file) on any workstation display running an X server. batch executes an arbitrary number of the utility commands (e.g. convert) in the form of a simple linear batch script in order to improve execution efficiency, and/or to allow use as a subordinate co- process under the control of an arbitrary script or program. benchmark executes one of the other utility commands (e.g. convert) for a specified number of iterations, or execution time, and reports execution time and other profiling information such as CPU utilization. Benchmark provides various operating modes including executing the command with a varying number of threads, and alternate reporting formats such as comma-separated value (CSV). compare compares two images and reports difference statistics according to specified metrics and/or outputs an image with a visual representation of the differences. It may also be used to test if images are similar within a particular range and specified metric, returning a truth value to the executing environment. composite composites images (blends or merges images together) to create new images. conjure interprets and executes scripts in the Magick Scripting Language (MSL). convert converts an input file using one image format to an output file with the same or differing image format while applying an arbitrary number of image transformations. display is a machine architecture independent image processing and display facility. It can display an image on any workstation display running an X server. identify describes the format and characteristics of one or more image files. It will also report if an image is incomplete or corrupt. import reads an image from any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen. mogrify transforms an image or a sequence of images. These transforms include image scaling, image rotation, color reduction, and others. The transmogrified image overwrites the original image. montage creates a composite by combining several separate images. The images are tiled on the composite image with the name of the image optionally appearing just below the individual tile. time executes a subcommand and reports the user, system, and total execution time consumed. version reports the GraphicsMagick release version, maximum sample- depth, copyright notice, supported features, and the options used while building the software. The GraphicsMagick utilities recognize the following image formats: Name Mode Description o 3FR r-- Hasselblad Photo RAW o 8BIM rw- Photoshop resource format o 8BIMTEXT rw- Photoshop resource text format o 8BIMWTEXT rw- Photoshop resource wide text format o APP1 rw- Raw application information o APP1JPEG rw- Raw JPEG binary data o ART r-- PF1: 1st Publisher o ARW r-- Sony Alpha DSLR RAW o AVS rw+ AVS X image o BIE rw- Joint Bi-level Image experts Group interchange format o BMP rw+ Microsoft Windows bitmap image o BMP2 -w- Microsoft Windows bitmap image v2 o BMP3 -w- Microsoft Windows bitmap image v3 o CACHE --- Magick Persistent Cache image format o CALS rw- Continuous Acquisition and Life-cycle Support Type 1 image o CAPTION r-- Caption (requires separate size info) o CIN rw- Kodak Cineon Format o CMYK rw- Raw cyan, magenta, yellow, and black samples (8 or 16 bits, depending on the image depth) o CMYKA rw- Raw cyan, magenta, yellow, black, and matte samples (8 or 16 bits, depending on the image depth) o CR2 r-- Canon Photo RAW o CRW r-- Canon Photo RAW o CUR r-- Microsoft Cursor Icon o CUT r-- DR Halo o DCM r-- Digital Imaging and Communications in Medicine image o DCR r-- Kodak Photo RAW o DCX rw+ ZSoft IBM PC multi-page Paintbrush o DNG r-- Adobe Digital Negative o DPS r-- Display PostScript Interpreter o DPX rw- Digital Moving Picture Exchange o EPDF rw- Encapsulated Portable Document Format o EPI rw- Adobe Encapsulated PostScript Interchange format o EPS rw- Adobe Encapsulated PostScript o EPS2 -w- Adobe Level II Encapsulated PostScript o EPS3 -w- Adobe Level III Encapsulated PostScript o EPSF rw- Adobe Encapsulated PostScript o EPSI rw- Adobe Encapsulated PostScript Interchange format o EPT rw- Adobe Encapsulated PostScript with MS-DOS TIFF preview o EPT2 rw- Adobe Level II Encapsulated PostScript with MS-DOS TIFF preview o EPT3 rw- Adobe Level III Encapsulated PostScript with MS-DOS TIFF preview o EXIF rw- Exif digital camera binary data o FAX rw+ Group 3 FAX (Not TIFF Group3 FAX!) o FITS rw- Flexible Image Transport System o FRACTAL r-- Plasma fractal image o FPX rw- FlashPix Format o GIF rw+ CompuServe graphics interchange format o GIF87 rw- CompuServe graphics interchange format (version 87a) o GRADIENT r-- Gradual passing from one shade to another o GRAY rw+ Raw gray samples (8/16/32 bits, depending on the image depth) o HISTOGRAM -w- Histogram of the image o HRZ r-- HRZ: Slow scan TV o HTML -w- Hypertext Markup Language and a client-side image map o ICB rw+ Truevision Targa image o ICC rw- ICC Color Profile o ICM rw- ICC Color Profile o ICO r-- Microsoft icon o ICON r-- Microsoft icon o IDENTITY r-- Hald CLUT identity image o IMAGE r-- GraphicsMagick Embedded Image o INFO -w+ Image descriptive information and statistics o IPTC rw- IPTC Newsphoto o IPTCTEXT rw- IPTC Newsphoto text format o IPTCWTEXT rw- IPTC Newsphoto wide text format o JBG rw+ Joint Bi-level Image experts Group interchange format o JBIG rw+ Joint Bi-level Image experts Group interchange format o JNG rw- JPEG Network Graphics o JP2 rw- JPEG-2000 JP2 File Format Syntax o JPC rw- JPEG-2000 Code Stream Syntax o JPEG rw- Joint Photographic Experts Group JFIF format o JPG rw- Joint Photographic Experts Group JFIF format o K25 r-- Kodak Photo RAW o KDC r-- Kodak Photo RAW o LABEL r-- Text image format o M2V rw+ MPEG-2 Video Stream o MAP rw- Colormap intensities and indices o MAT r-- MATLAB image format o MATTE -w+ MATTE format o MIFF rw+ Magick Image File Format o MNG rw+ Multiple-image Network Graphics o MONO rw- Bi-level bitmap in least-significant- -byte-first order o MPC rw+ Magick Persistent Cache image format o MPEG rw+ MPEG-1 Video Stream o MPG rw+ MPEG-1 Video Stream o MRW r-- Minolta Photo Raw o MSL r-- Magick Scripting Language o MTV rw+ MTV Raytracing image format o MVG rw- Magick Vector Graphics o NEF r-- Nikon Electronic Format o NULL r-- Constant image of uniform color o OTB rw- On-the-air bitmap o P7 rw+ Xv thumbnail format o PAL rw- 16bit/pixel interleaved YUV o PALM rw- Palm Pixmap o PBM rw+ Portable bitmap format (black and white) o PCD rw- Photo CD o PCDS rw- Photo CD o PCL -w- Page Control Language o PCT rw- Apple Macintosh QuickDraw/PICT o PCX rw- ZSoft IBM PC Paintbrush o PDB rw+ Palm Database ImageViewer Format o PDF rw+ Portable Document Format o PEF r-- Pentax Electronic File o PFA r-- TrueType font o PFB r-- TrueType font o PGM rw+ Portable graymap format (gray scale) o PGX r-- JPEG-2000 VM Format o PICON rw- Personal Icon o PICT rw- Apple Macintosh QuickDraw/PICT o PIX r-- Alias/Wavefront RLE image format o PLASMA r-- Plasma fractal image o PNG rw- Portable Network Graphics o PNG24 rw- Portable Network Graphics, 24 bit RGB opaque only o PNG32 rw- Portable Network Graphics, 32 bit RGBA semitransparency OK o PNG8 rw- Portable Network Graphics, 8-bit indexed, binary transparency only o PNM rw+ Portable anymap o PPM rw+ Portable pixmap format (color) o PREVIEW -w- Show a preview an image enhancement, effect, or f/x o PS rw+ Adobe PostScript o PS2 -w+ Adobe Level II PostScript o PS3 -w+ Adobe Level III PostScript o PSD rw- Adobe Photoshop bitmap o PTIF rw- Pyramid encoded TIFF o PWP r-- Seattle Film Works o RAF r-- Fuji Photo RAW o RAS rw+ SUN Rasterfile o RGB rw+ Raw red, green, and blue samples o RGBA rw+ Raw red, green, blue, and matte samples o RLA r-- Alias/Wavefront image o RLE r-- Utah Run length encoded image o SCT r-- Scitex HandShake o SFW r-- Seattle Film Works o SGI rw+ Irix RGB image o SHTML -w- Hypertext Markup Language and a client-side image map o STEGANO r-- Steganographic image o SUN rw+ SUN Rasterfile o SVG rw+ Scalable Vector Gaphics o TEXT rw+ Raw text o TGA rw+ Truevision Targa image o TIFF rw+ Tagged Image File Format o TILE r-- Tile image with a texture o TIM r-- PSX TIM o TOPOL r-- TOPOL X Image o TTF r-- TrueType font o TXT rw+ Raw text o UIL -w- X-Motif UIL table o UYVY rw- 16bit/pixel interleaved YUV o VDA rw+ Truevision Targa image o VICAR rw- VICAR rasterfile format o VID rw+ Visual Image Directory o VIFF rw+ Khoros Visualization image o VST rw+ Truevision Targa image o WBMP rw- Wireless Bitmap (level 0) image o WMF r-- Windows Metafile o WPG r-- Word Perfect Graphics o X rw- X Image o X3F r-- Foveon X3 (Sigma/Polaroid) RAW o XBM rw- X Windows system bitmap (black and white) o XC r-- Constant image uniform color o XCF r-- GIMP image o XMP rw- Adobe XML metadata o XPM rw- X Windows system pixmap (color) o XV rw+ Khoros Visualization image o XWD rw- X Windows system window dump (color) o YUV rw- CCIR 601 4:1:1 or 4:2:2 (8-bit only) Modes: r Read w Write + Multi-image Support for some of these formats require additional programs or libraries. See README in the source package for where to find optional additional software. Note, a format delineated with + means that if more than one image is specified, frames are combined into a single multi-image file. Use +adjoin if you want a single image produced for each frame. Your installation might not support all of the formats in the list. To get an accurate listing of the formats supported by your particular configuration, run "gm convert -list format". Raw images are expected to have one byte per pixel unless gm is compiled in 16-bit quantum mode or in 32-bit quantum mode. Here, the raw data is expected to be stored two or four bytes per pixel, respectively, in most-significant-byte-first order. For example, you can tell if gm was compiled in 16-bit mode by typing "gm version" without any options, and looking for "Q:16" in the first line of output. FILES AND FORMATS By default, the image format is determined by its magic number, i.e., the first few bytes of the file. To specify a particular image format, precede the filename with an image format name and a colon (i.e.ps:image) or specify the image type as the filename suffix (i.e.image.ps). The magic number takes precedence over the filename suffix and the prefix takes precedence over the magic number and the suffix in input files. When a file is read, its magic number is stored in the "image->magick" string. In output files, the prefix takes precedence over the filename suffix, and the filename suffix takes precedence over the "image->magick" string. To read the "built-in" formats (GRANITE, H, LOGO, NETSCAPE, PLASMA, and ROSE) use a prefix (including the colon) without a filename or suffix. To read the XC format, follow the colon with a color specification. To read the CAPTION format, follow the colon with a text string or with a filename prefixed with the at symbol (@). When you specify X as your image type, the filename has special meaning. It specifies an X window by id, name, or root. If no filename is specified, the window is selected by clicking the mouse in the desired window. Specify input_file as - for standard input, output_file as - for standard output. If input_file has the extension .Z or .gz, the file is uncompressed with uncompress or gunzip respectively. If output_file has the extension .Z or .gz, the file is compressed using with compress or gzip respectively. Use an optional index enclosed in brackets after an input file name to specify a desired subimage of a multi-resolution image format like Photo CD (e.g. "img0001.pcd[4]") or a range for MPEG images (e.g. "video.mpg[50-75]"). A subimage specification can be disjoint (e.g. "image.tiff[2,7,4]"). For raw images, specify a subimage with a geometry (e.g. -size 640x512 "image.rgb[320x256+50+50]"). Surround the image name with quotation marks to prevent your shell from interpreting the square brackets. Single images are written with the filename you specify. However, multi-part images (e.g., a multi-page PostScript document with +adjoin specified) may be written with the scene number included as part of the filename. In order to include the scene number in the filename, it is necessary to include a printf-style %d format specification in the file name and use the +adjoin option. For example, image%02d.miff writes files image00.miff, image01.miff, etc. Only a single specification is allowed within an output filename. If more than one specification is present, it will be ignored. It is best to embed the scene number in the base part of the file name, not in the extension, because the extension will not be a recognizable image type. When running a commandline utility, you can prepend an at sign @ to a filename to read a list of image filenames from that file. This is convenient in the event you have too many image filenames to fit on the command line. OPTIONS Options are processed in command line order. Any option you specify on the command line remains in effect for the set of images that follows, until the set is terminated by the appearance of any option or -noop. Some options only affect the decoding of images and others only the encoding. The latter can appear after the final group of input images. This is a combined list of the command-line options used by the GraphicsMagick utilities (animate, compare, composite, convert, display, identify, import, mogrify and montage). In this document, angle brackets ("<>") enclose variables and curly brackets ("{}") enclose optional parameters. For example, "-fuzz {%}" means you can use the option "-fuzz 10" or "-fuzz 2%". -adjoin join images into a single multi-image file By default, all images of an image sequence are stored in the same file. However, some formats (e.g. JPEG) do not support storing more than one image per file and only the first frame in an image sequence will be saved unless the result is saved to separate files. Use +adjoin to force saving multiple frames to multiple numbered files. If +adjoin is used, then the output filename must include a printf style formatting specification for the numeric part of the filename. For example, image%02d.miff -affine drawing transform matrix This option provides a transform matrix {sx,rx,ry,sy,tx,ty} for use by subsequent -draw or -transform options. -antialias remove pixel aliasing By default antialiasing algorithms are used when drawing objects (e.g. lines) or rendering vector formats (e.g. WMF and Postscript). Use +antialias to disable use of antialiasing algorithms. Reasons to disable antialiasing include avoiding increasing colors in the image, or improving rendering speed. -append append a set of images This option creates a single image where the images in the original set are stacked top-to-bottom. If they are not of the same width, any narrow images will be expanded to fit using the background color. Use +append to stack images left-to-right. The set of images is terminated by the appearance of any option. If the -append option appears after all of the input images, all images are appended. -asc-cdl apply ASC CDL color transform Applies ("bakes in") the ASC CDL, which is a format for the exchange of basic primary color grading information between equipment and software from different manufacturers. The format defines the math for three functions: slope, offset and power. Each function uses a number for the red, green, and blue color channels for a total of nine numbers comprising a single color decision. The tenth number (optional) is for chromiance (saturation) as specified by ASC CDL 1.2. The argument string is comma delimited and is in the following form (but without invervening spaces or line breaks) redslope,redoffset,redpower: greenslope,greenoffset,greenpower: blueslope,blueoffset,bluepower: saturation with the unity (no change) specification being: "1.0,0.0,1.0:1.0,0.0,1.0:1.0,0.0,1.0:1.0" -authenticate decrypt image with this password Use this option to supply a password for decrypting an image or an image sequence, if it is being read from a format such as PDF that supports encryption. Encrypting images being written is not supported. -auto-orient orient (rotate) image so it is upright Adjusts the image orientation so that it is suitable for viewing. Uses the orientation tag obtained from the image file or as supplied by the -orient option. -average average a set of images The set of images is terminated by the appearance of any option. If the -average option appears after all of the input images, all images are averaged. -backdrop display the image centered on a backdrop. This backdrop covers the entire workstation screen and is useful for hiding other X window activity while viewing the image. The color of the backdrop is specified as the foreground color (X11 default is black). Refer to "X Resources", below, for details. -background the background color The color is specified using the format described under the -fill option. -black-threshold red[,green][,blue][,opacity] pixels below the threshold become black Use -black-threshold to set pixels with values below the specified threshold to minimum value (black). If only one value is supplied, or the red, green, and blue values are identical, then intensity thresholding is used. If the color threshold values are not identical then channel-based thresholding is used, and color distortion will occur. Specify a negative value (e.g. -1) if you want a channel to be ignored but you do want to threshold a channel later in the list. If a percent (%) symbol is appended, then the values are treated as a percentage of maximum range. -blue-primary , blue chromaticity primary point -blur {x} blur the image with a Gaussian operator Blur with the given radius and standard deviation (sigma). -border x surround the image with a border of color See -geometry for details about the geometry specification. -bordercolor the border color The color is specified using the format described under the -fill option. -borderwidth the border width -box set the color of the annotation bounding box The color is specified using the format described under the -fill option. See -draw for further details. -channel the type of channel Choose from: Red, Green, Blue, Opacity, Matte, Cyan, Magenta, Yellow, Black, or Gray. Use this option to extract a particular channel from the image. Opacity, for example, is useful for extracting the opacity values from an image. -charcoal simulate a charcoal drawing -chop x{+-}{+-}{%} remove pixels from the interior of an image Width and height give the number of columns and rows to remove, and x and y are offsets that give the location of the leftmost column and topmost row to remove. The x offset normally specifies the leftmost column to remove. If the -gravity option is present with NorthEast, East, or SouthEast gravity, it gives the distance leftward from the right edge of the image to the rightmost column to remove. Similarly, the y offset normally specifies the topmost row to remove, but if the -gravity option is present with SouthWest, South, or SouthEast gravity, it specifies the distance upward from the bottom edge of the image to the bottom row to remove. The -chop option removes entire rows and columns, and moves the remaining corner blocks leftward and upward to close the gaps. -clip apply the clipping path, if one is present If a clipping path is present, it will be applied to subsequent operations. For example, if you type the following command: gm convert -clip -negate cockatoo.tif negated.tif only the pixels within the clipping path are negated. The -clip feature requires the XML library. If the XML library is not present, the option is ignored. -coalesce merge a sequence of images Each image N in the sequence after Image 0 is replaced with the image created by flattening images 0 through N. The set of images is terminated by the appearance of any option. If the -coalesce option appears after all of the input images, all images are coalesced. -colorize colorize the image with the pen color Specify the amount of colorization as a percentage. You can apply separate colorization values to the red, green, and blue channels of the image with a colorization value list delimited with slashes (e.g. 0/0/50). The -colorize option may be used in conjunction with -modulate to produce a nice sepia toned image like: gm convert input.ppm -modulate 115,0,100 \ -colorize 7,21,50 output.ppm. -colormap define the colormap type Choose between shared or private. This option only applies when the default X server visual is PseudoColor or GRAYScale. Refer to -visual for more details. By default, a shared colormap is allocated. The image shares colors with other X clients. Some image colors could be approximated, therefore your image may look very different than intended. Choose Private and the image colors appear exactly as they are defined. However, other clients may go technicolor when the image colormap is installed. -colors preferred number of colors in the image The actual number of colors in the image may be less than your request, but never more. Note, this is a color reduction option. Images with less unique colors than specified with this option will have any duplicate or unused colors removed. The ordering of an existing color palette may be altered. When converting an image from color to grayscale, convert the image to the gray colorspace before reducing the number of colors since doing so is most efficient. Refer to quantize for more details. Note, options -dither, -colorspace, and -treedepth affect the color reduction algorithm. -colorspace the type of colorspace Choices are: CineonLog, CMYK, GRAY, HSL, HWB, OHTA, RGB, Rec601Luma, Rec709Luma, Rec601YCbCr, Rec709YCbCr, Transparent, XYZ, YCbCr, YIQ, YPbPr, or YUV. Color reduction, by default, takes place in the RGB color space. Empirical evidence suggests that distances in color spaces such as YUV or YIQ correspond to perceptual color differences more closely than do distances in RGB space. These color spaces may give better results when color reducing an image. Refer to quantize for more details. Two gray colorspaces are supported. The Rec601Luma space is based on the recommendations for legacy NTSC television (ITU-R BT.601-5). The Rec709Luma space is based on the recommendations for HDTV (Rec. ITU-R BT.709-5) and is suitable for use with computer graphics, and for contemporary CRT displays. The GRAY colorspace currently selects the Rec601Luma colorspace by default for backwards compatibly reasons. This default may be re-considered in the future. Two YCbCr colorspaces are supported. The Rec601YCbCr space is based on the recommendations for legacy NTSC television (ITU-R BT.601-5). The Rec709CbCr space is based on the recommendations for HDTV (Rec. ITU-R BT.709-5) and is suitable for suitable for use with computer graphics, and for contemporary CRT displays. The YCbCr colorspace specification is equivalent toRec601YCbCr. The Transparent color space behaves uniquely in that it preserves the matte channel of the image if it exists. The -colors or -monochrome option, or saving to a file format which requires color reduction, is required for this option to take effect. -comment annotate an image with a comment Use this option to assign a specific comment to the image, when writing to an image format that supports comments. You can include the image filename, type, width, height, or other image attribute by embedding special format characters listed under the -format option. The comment is not drawn on the image, but is embedded in the image datastream via a "Comment" tag or similar mechanism. If you want the comment to be visible on the image itself, use the -draw option instead. For example, -comment "%m:%f %wx%h" produces an image comment of MIFF:bird.miff 512x480 for an image titled bird.miff and whose width is 512 and height is 480. If the first character of string is @, the image comment is read from a file titled by the remaining characters in the string. Please note that if the string comes from an untrusted source that it should be sanitized before use since otherwise the content of an arbitrary readable file could be incorporated in a comment in the output file (a security risk). If the -comment option appears multiple times, only the last comment is stored. In PNG images, the comment is stored in a tEXt or zTXt chunk with the keyword "comment". -compose the type of image composition The description of composition uses abstract terminology in order to allow the the description to be more clear, while avoiding constant values which are specific to a particular build configuration. Each image pixel is represented by red, green, and blue levels (which are equal for a gray pixel). MaxRGB is the maximum integral value which may be stored in the red, green, or blue channels of the image. Each image pixel may also optionally (if the image matte channel is enabled) have an associated level of opacity (ranging from opaque to transparent), which may be used to determine the influence of the pixel color when compositing the pixel with another image pixel. If the image matte channel is disabled, then all pixels in the image are treated as opaque. The color of an opaque pixel is fully visible while the color of a transparent pixel color is entirely absent (pixel color is ignored). By definition, raster images have a rectangular shape. All image rows are of equal length, and all image columns have the same number of rows. By treating the opacity channel as a visual "mask" the rectangular image may be given a "shape" by treating the opacity channel as a cookie-cutter for the image. Pixels within the shape are opaque, while pixels outside the shape are transparent. Pixels on the boundary of the shape may be between opaque and transparent in order to provide antialiasing (visually smooth edges). The description of the composition operators use this concept of image "shape" in order to make the description of the operators easier to understand. While it is convenient to describe the operators in terms of "shapes" they are by no means limited to mask-style operations since they are based on continuous floating-point mathematics rather than simple boolean operations. By default, the Over composite operator is used. The following composite operators are available: Over In Out Atop Xor Plus Minus Add Subtract Difference Divide Multiply Bumpmap Copy CopyRed CopyGreen CopyBlue CopyOpacity CopyCyan CopyMagenta CopyYellow CopyBlack The behavior of each operator is described below. Over The result will be the union of the two image shapes, with opaque areas of change-image obscuring base-image in the region of overlap. In The result is simply change-image cut by the shape of base-image. None of the image data of base-image will be in the result. Out The resulting image is change-image with the shape of base-image cut out. Atop The result is the same shape as base-image, with change- image obscuring base-image where the image shapes overlap. Note this differs from over because the portion of change- image outside base-image's shape does not appear in the result. Xor The result is the image data from both change-image and base-image that is outside the overlap region. The overlap region will be blank. Plus The result is just the sum of the image data. Output values are cropped to MaxRGB (no overflow). This operation is independent of the matte channels. Minus The result of change-image - base-image, with underflow cropped to zero. The matte channel is ignored (set to opaque, full coverage). Add The result of change-image + base-image, with overflow wrapping around (mod MaxRGB+1). Subtract The result of change-image - base-image, with underflow wrapping around (mod MaxRGB+1). The add and subtract operators can be used to perform reversible transformations. Difference The result of abs(change-image - base-image). This is useful for comparing two very similar images. Divide The result of change-image / base-image. This is useful for improving the readability of text on unevenly illuminated photos (by using a gaussian blurred copy of change-image as base-image). Multiply The result of change-image * base-image. This is useful for the creation of drop-shadows. Bumpmap The result base-image shaded by change-image. Copy The resulting image is base-image replaced with change- image. Here the matte information is ignored. CopyRed The resulting image is the red channel in base-image replaced with the red channel in change-image. The other channels are copied untouched. CopyGreen The resulting image is the green channel in base-image replaced with the green channel in change-image. The other channels are copied untouched. CopyBlue The resulting image is the blue channel in base-image replaced with the blue channel in change-image. The other channels are copied untouched. CopyOpacity The resulting image is the opacity channel in base-image replaced with the opacity channel in change-image. The other channels are copied untouched. CopyCyan The resulting image is the cyan channel in base-image replaced with the cyan channel in change-image. The other channels are copied untouched. Use of this operator requires that base-image be in CMYK(A) colorspace. CopyMagenta The resulting image is the magenta channel in base-image replaced with the magenta channel in change-image. The other channels are copied untouched. Use of this operator requires that base-image be in CMYK(A) colorspace. CopyYellow The resulting image is the yellow channel in base-image replaced with the yellow channel in change-image. The other channels are copied untouched. Use of this operator requires that base-image be in CMYK(A) colorspace. CopyBlack The resulting image is the black channel in base-image replaced with the black channel in change-image. The other channels are copied untouched. Use of this operator requires that base-image be in CMYK(A) colorspace. If change-image is not in CMYK space, then the change-image pixel intensities are used. -compress the type of image compression Choices are: None, BZip, Fax, Group3, Group4, JPEG, Lossless, LZW, RLE, Zip, LZMA, JPEG2000, JPEG2000, JBIG, JBIG2, WebP, or ZSTD. Specify +compress to store the binary image in an uncompressed format. The default is the compression type of the specified image file. "Lossless" refers to lossless JPEG, which is only available if the JPEG library has been patched to support it. Use of lossless JPEG is generally not recommended. Use the -quality option to set the compression level to be used by the JPEG, JPEG-2000, PNG, MIFF, MPEG, and TIFF encoders. Use the -sampling-factor option to set the sampling factor to be used by the DPX, JPEG, MPEG, and YUV encoders for downsampling the chroma channels. -contrast enhance or reduce the image contrast This option enhances the intensity differences between the lighter and darker elements of the image. Use -contrast to enhance the image or +contrast to reduce the image contrast. For a more pronounced effect you can repeat the option: gm convert rose: -contrast -contrast rose_c2.png -convolve convolve image with the specified convolution kernel The kernel is specified as a comma-separated list of floating point values, ordered left-to right, starting with the top row. The order of the kernel is determined by the square root of the number of entries. Presently only square kernels are supported. -create-directories create output directory if required Use this option with -output-directory if the input paths contain subdirectories and it is desired to create similar subdirectories in the output directory. Without this option, mogrify will fail if the required output directory does not exist. -crop x{+-}{+-}{%} preferred size and location of the cropped image See -geometry for details about the geometry specification. The width and height give the size of the image that remains after cropping, and x and y are offsets that give the location of the top left corner of the cropped image with respect to the original image. To specify the amount to be removed, use -shave instead. If the x and y offsets are present, a single image is generated, consisting of the pixels from the cropping region. The offsets specify the location of the upper left corner of the cropping region measured downward and rightward with respect to the upper left corner of the image. If the -gravity option is present with NorthEast, East, or SouthEast gravity, it gives the distance leftward from the right edge of the image to the right edge of the cropping region. Similarly, if the -gravity option is present with SouthWest, South, or SouthEast gravity, the distance is measured upward between the bottom edges. If the x and y offsets are omitted, a set of tiles of the specified geometry, covering the entire input image, is generated. The rightmost tiles and the bottom tiles are smaller if the specified geometry extends beyond the dimensions of the input image. -cycle displace image colormap by amount Amount defines the number of positions each colormap entry isshifted. -debug enable debug printout The events parameter specifies which events are to be logged. It can be either None, All, or a comma-separated list consisting of one or more of the following domains: Annotate, Blob, Cache, Coder, Configure, Deprecate, Error, Exception, FatalError, Information, Locale, Option, Render, Resource, TemporaryFile, Transform, User. Warning, or X11, For example, to log cache and blob events, use gm convert -debug "Cache,Blob" rose: rose.png The "User" domain is normally empty, but developers can log "User" events in their private copy of GraphicsMagick. Use the -log option to specify the format for debugging output. Use +debug to turn off all logging. An alternative to using -debug is to use the MAGICK_DEBUG environment variable. The allowed values for the MAGICK_DEBUG environment variable are the same as for the -debug option. -deconstruct break down an image sequence into constituent parts This option compares each image with the next in a sequence and returns the maximum bounding region of any pixel differences it discovers. This method can undo a coalesced sequence returned by the -coalesce option, and is useful for removing redundant information from a GIF or MNG animation. The sequence of images is terminated by the appearance of any option. If the -deconstruct option appears after all of the input images, all images are deconstructed. -define {=},... add coder/decoder specific options This option creates one or more definitions for coders and decoders to use while reading and writing image data. Definitions may be passed to coders and decoders to control options that are specific to certain image formats. If value is missing for a definition, an empty-valued definition of a flag will be created with that name. This is used to control on/off options. Use +define ,... to remove definitions previously created. Use +define "*" to remove all existing definitions. The following definitions may be created: bmp:allow-jpeg={true|false} If the bmp:allow-jpeg value is set to true, then enable BMP files using JPEG compression, under control of the compression option (which may be JPEG already if the input file is JPEG). JPEG-compressed BMP files are very rare so this option acts as a safeguard to assure that the current compression setting does not accidentally produce JPEG- compressed BMP files which most other software is unable to read. cineon:colorspace={rgb|cineonlog} Use the cineon:colorspace option when reading a Cineon file to specify the colorspace the Cineon file uses. This overrides the colorspace type implied by the DPX header (if any). dpx:bits-per-sample= If the dpx:bits-per-sample key is defined, GraphicsMagick will write DPX images with the specified bits per sample, overriding any existing depth value. If this option is not specified, then the value is based on the existing image depth value from the original image file. The DPX standard supports bits per sample values of 1, 8, 10, 12, and 16. Many DPX readers demand a sample size of 10 bits with type A padding (see below). dpx:colorspace={rgb|cineonlog} Use the dpx:colorspace option when reading a DPX file to specify the colorspace the DPX file uses. This overrides the colorspace type implied by the DPX header (if any). dpx:packing-method={packed|a|b|lsbpad|msbpad} DPX samples are output within 32-bit words. They may be tightly packed end-to-end within the words ("packed"), padded with null bits to the right of the sample ("a" or "lsbpad"), or padded with null bits to the left of the sample ("b" or "msbpad"). This option only has an effect for sample sizes of 10 or 12 bits. If samples are not packed, the DPX standard recommends type A padding. Many DPX readers demand a sample size of 10 bits with type A padding. dpx:pixel-endian={lsb|msb} Allows the user to specify the endian order of the pixels when reading or writing the DPX files. Sometimes this is useful if the file is (or must be) written incorrectly so that the file header and the pixels use different endianness. dpx:swap-samples={true|false} dpx:swap-samples-read={true|false} dpx:swap-samples-write={true|false} GraphicsMagick strives to adhere to the DPX standard but certain aspects of the standard can be quite confusing. As a result, some 10-bit DPX files have Red and Blue interchanged, or Cb and Cr interchanged due to an different interpretation of the standard, or getting the wires crossed. The swap-samples option may be supplied when reading or writing in order to read or write using the necessary sample order. Use swap-samples-read when swapping should only occur in the reader, or swap-samples- write when swapping should only occur in the writer. heif:ignore-transformations={true|false} Return HEIF (e.g. HEIC/AVIF) image without any transformations (e.g. rotation) applied. gradient:direction={South|North|West|East|NorthWest|NorthEast|SouthWest|SouthEast} By default, the gradient coder produces a gradient from top to bottom ("South"). Since GraphicsMagick 1.3.35, the gradient direction may be specified to produce gradient vectors according to a gravity-like specification. The arguments are South (Top to Bottom), North (Bottom to Top), West (Right to Left), East (Left to Right), NorthWest (Bottom-Right to Top-Left), NorthEast (Bottom- Left to Top-Right), SouthWest (Top-Right Bottom-Left), and SouthEast (Top-Left to Bottom-Right). jp2:rate= Specify the compression factor to use while writing JPEG-2000 files. The compression factor is the reciprocal of the compression ratio. The valid range is 0.0 to 1.0, with 1.0 indicating lossless compression. If defined, this value overrides the -quality setting. The default quality setting of 75 results in a rate value of 0.06641. jpeg:arithmetic-coding={true|false} Enables or disables arithmetic encoding if the JPEG library supports it (default disabled). When this is enabled, optimize-coding is necessarily disabled. jpeg:block-smoothing={true|false} Enables or disables block smoothing when reading a JPEG file (default enabled). jpeg:dct-method= Selects the IJG JPEG library DCT implementation to use. The encoding implementations vary in speed and encoding error. The available choices for value are islow, ifast, float, default and fastest. Note that fastest might not necessarily be fastest on your CPU, depending on the choices made when the JPEG library was built and how your CPU behaves. jpeg:fancy-upsampling={true|false} Enables or disables fancy upsampling when reading a JPEG file (default enabled). jpeg:data-precision= Selects the JPEG sample storage size. Normal JPEG uses 8. Turbo-jpeg and some variants of IJG JPEG also support 12 and 16 bits. jpeg:lossless-precision= Selects a degree of precision to use while performing DPCM-based compression. The available range 0 to precision-1. For example, if the output depth is 16, then the available range is 0 to 15. When the precision is non-zero, then the pixels are right-shifted to effectively support fewer bits (fewer colors), but offering an improved compression ratio. Use a value of 0 to achieve lossless compression. jpeg:lossless-predictor= Selects the predictor to use for lossless compression. The supported values are in the range of 1 to 7 and select a pre-defined predictor algorithm to use, which considers surrounding pixels. The best predictor for a particular image depends on the image. jpeg:max-scan-number= Specifies an integer value for the maximum number of progressive scans allowed in a JPEG file. The default maximum is 100 scans. This limit is imposed due to a weakness in the JPEG standard which allows small JPEG files to take many minutes or hours to be read. jpeg:max-warnings= Specifies an integer value for how many warnings are allowed for any given error type before being promoted to a hard error. JPEG files producing excessive warnings indicate a problem with the file. jpeg:optimize-coding={true|false} Selects if huffman encoding should be used. Huffman encoding is enabled by default, but may be disabled for very large images since it encoding requires that the entire image be buffered in memory. Huffman encoding produces smaller JPEG files at the expense of added compression time and memory consumption. jpeg:preserve-settings If the jpeg:preserve-settings flag is defined, the JPEG encoder will use the same "quality" and "sampling-factor" settings that were found in the input file, if the input was in JPEG format. These settings are also preserved if the input is a JPEG file and the output is a JNG file. If the colorspace of the output file differs from that of the input file, the quality setting is preserved but the sampling-factors are not. pcl:fit-to-page If the pcl:fit-to-page flag is defined, then the printer is requested to scale the image to fit the page size (width and/or height). png:chunk-malloc-max= png:chunk-malloc-max specifies the maximum chunk size that libpng will be allowed to read. Libpng's default is normally 8,000,000 bytes. Very rarely, a valid PNG file may be encountered where the error is reported "chunk data is too large". In this case, the limit may be increased using this option. Take care when increasing this limit since an excessively large limit could allow untrusted files to use excessive memory. mng:maximum-loops= mng:maximum-loops specifies the maximum number of loops allowed to be specified by a MNG LOOP chunk. Without an imposed limit, a MNG file could request up to 2147483647 loops, which could run for a very long time. The current default limit is 512 loops. pdf:use-cropbox={true|false} If the pdf:use-cropbox flag is set to true, then Ghostscript is requested to apply the PDF crop box. pdf:stop-on-error={true|false} If the pdf:stop-on-error flag is set to true, then Ghostscript is requested to stop processing the PDF when the first error is encountered. Otherwise it will attempt to process all requested pages. ps:imagemask If the ps:imagemask flag is defined, the PS3 and EPS3 coders will create Postscript files that render bilevel images with the Postscript imagemask operator instead of the image operator. ptif:minimum-geometry= If the ptif:minimum-geometry key is defined, GraphicsMagick will use it to determine the minimum frame size to output when writing a pyramid TIFF file (a TIFF file containing a succession of reduced versions of the first frame). The default minimum geometry is 32x32. tiff:alpha={unspecified|associated|unassociated} Specify the TIFF alpha channel type when reading or writing TIFF files, overriding the normal value. The default alpha channel type for new files is unspecified alpha. Existing alpha settings are preserved when converting from one TIFF file to another. When a TIFF file uses associated alpha, the image pixels are pre-multiplied (i.e. altered) with the alpha channel. Files with "associated" alpha appear as if they were alpha composited on a black background when the matte channel is disabled. If the unassociated alpha type is selected, then the alpha channel is saved without altering the pixels. Photoshop recognizes associated alpha as transparency information, if the file is saved with unassociated alpha, the alpha information is loaded as an independent channel. Note that for many years, ImageMagick and GraphicsMagick marked TIFF files as using associated alpha, without properly pre-multiplying the pixels. tiff:fill-order={msb2lsb|lsb2msb} If the tiff:fill-order key is defined, GraphicsMagick will use it to determine the bit fill order used while writing TIFF files. The normal default is "msb2lsb", which matches the native bit order of all modern CPUs. The only exception to this is when Group3 or Group4 FAX compression is requested since FAX machines send data in bit-reversed order and therefore RFC 2301 recommends using reverse order. tiff:group-three-options= If the tiff:group-three-options key is defined, GraphicsMagick will use it to set the group3 options tag when writing group3-compressed TIFF. Please see the TIFF specification for the usage of this tag. The default value is 4. tiff:ignore-tags= If the tiff:ignore-tags key is defined, then it is used as a list of comma-delimited integer TIFF tag values to ignore while reading the TIFF file. This is useful in order to be able to read files which which otherwise fail to read due to problems with TIFF tags. Note that some TIFF tags are required in order to be able to read the image data at all. tiff:photometric={minisblack|miniswhite} For grayscale and bilevel images, GraphicsMagick normally chooses the photometric based on bit depth and compression. If the tiff:photometric key is defined, GraphicsMagick will use it to determine the photometric used while writing grayscale and bilevel images. Normally bilevel images are miniswhite and grayscale images are minisblack. tiff:report-warnings={false|true} If the tiff:report-warnings key is defined and set to true, then TIFF warnings are reported as a warning exception rather than as a coder log message. Such warnings are reported after the image has been read or written. Most TIFF warnings are benign but sometimes they may help deduce problems with the TIFF file, or help detect that the TIFF file requires a special application to read successfully due to the use of proprietary or specialized extensions. tiff:sample-format={unsigned|ieeefp} If the tiff:sample-format key is defined, GraphicsMagick will use it to determine the sample format used while writing TIFF files. The default is "unsigned". Specify "ieeefp" in order to write floating-point TIFF files with float (32-bit) or double (64-bit) values. Use the tiff:bits-per-sample define to determine the type of floating-point value to use. tiff:max-sample-value= If the tiff:max-sample-value key is defined, GraphicsMagick will use the assigned value as the maximum floating point value while reading or writing IEEE floating point TIFFs. Otherwise the maximum value is 1.0 or the value obtained from the file's SMaxSampleValue tag (if present). The floating point data is currently not scanned in advance to determine a best maximum sample value so if the range is not 1.0, or the SMaxSampleValue tag is not present, it may be necessary to (intelligently) use this parameter to properly read a file. tiff:min-sample-value= If the tiff:min-sample-value key is defined, GraphicsMagick will use the assigned value as the minimum floating point value while reading or writing IEEE floating point TIFFs. Otherwise the minimum value is 0.0 or the value obtained from the file's SMinSampleValue tag (if present). tiff:bits-per-sample= If the tiff:bits-per-sample key is defined, GraphicsMagick will write images with the specified bits per sample, overriding any existing depth value. Value may be any in the range of 1 to 32, or 64 when the default 'unsigned' format is written, or 16/32/24/64 if IEEEFP format is written. Please note that the baseline TIFF 6.0 specification only requires readers to handle certain powers of two, and the values to be handled depend on the nature of the image (e.g. colormapped, grayscale, RGB, CMYK). tiff:samples-per-pixel= If the tiff:samples-per-pixel key is defined to a value, the TIFF coder will write TIFF images with the defined samples per pixel, overriding any value stored in the image. This option should not normally be used. tiff:rows-per-strip= Allows the user to specify the number of rows per TIFF strip. Rounded up to a multiple of 16 when using JPEG compression. Ignored when using tiles. tiff:strip-per-page=true Requests that the image is written in a single TIFF strip. This is normally the default when group3 or group4 compression is requested within reasonable limits. Requesting a single strip for large images may result in failure due to resource consumption in the writer or reader. tiff:tile Enable writing tiled TIFF (rather than stripped) using the default tile size. Tiled TIFF organizes the image as an array of smaller images (tiles) in order to enable random access. tiff:tile-geometry=x Specify the tile size to use while writing tiled TIFF. Width and height should be a multiple of 16. If the value is not a multiple of 16, then it will be rounded down. Enables tiled TIFF if it has not already been enabled. GraphicsMagick does not use tiled storage internally so tiles need to be converted back and forth from the internal scanline-oriented storage to tile-oriented storage. Testing with typical RGB images shows that useful square tile size values range from 128x128 to 1024x1024. Large images which require using a disk-based pixel cache benefit from large tile sizes while images which fit in memory work well with smaller tile sizes. tiff:tile-width= Specify the tile width to use while writing tiled TIFF. The tile height is then defaulted to an appropriate size. Width should be a multiple of 16. If the value is not a multiple of 16, then it will be rounded down. Enables tiled TIFF if it has not already been enabled. tiff:tile-height= Specify the tile height to use while writing tiled TIFF. The tile width is then defaulted to an appropriate size. Height should be a multiple of 16. If the value is not a multiple of 16, then it will be rounded down. Enables tiled TIFF if it has not already been enabled. tiff:webp-lossless={TRUE|FALSE} Specify a value of TRUE to enable lossless mode while writing WebP-compressed TIFF files. The WebP webp:lossless option may also be used. The quality factor set by the -quality option may be used to influence the level of effort expended while compressing. tiff:zstd-compress-level= Specify the compression level to use while writing Zstd- compressed TIFF files. The valid range is 1 to 22. If this define is not specified, then the 'quality' value is used such that the default quality setting of 75 is translated to a compress level of 9 such that 'quality' has a useful range of 10-184 if used for this purpose. webp:lossless={true|false} Enable lossless encoding. webp:method={0-6} Quality/speed trade-off. webp:image-hint={default,graph,photo,picture} Hint for image type. webp:target-size= Target size in bytes. webp:target-psnr= Minimal distortion to try to achieve. webp:segments={1-4} Maximum number of segments to use. webp:sns-strength={0-100} Spatial Noise Shaping. webp:filter-strength={0-100} Filter strength. webp:filter-sharpness={0-7} Filter sharpness. webp:filter-type={0,1} Filtering type. 0 = simple, 1 = strong (only used if filter-strength > 0 or autofilter is enabled). webp:auto-filter={true|false} Auto adjust filter's strength. webp:alpha-compression= Algorithm for encoding the alpha plane (0 = none, 1 = compressed with WebP lossless). Default is 1. webp:alpha-filtering= Predictive filtering method for alpha plane. 0: none, 1: fast, 2: best. Default is 1. webp:alpha-quality={0-100} Between 0 (smallest size) and 100 (lossless). Default is 100. webp:pass=[1..10] Number of entropy-analysis passes. webp:show-compressed={true|false} Export the compressed picture back. In-loop filtering is not applied. webp:preprocessing=[0,1,2] 0=none, 1=segment-smooth, 2=pseudo-random dithering webp:partitions=[0-3] log2(number of token partitions) in [0..3]. Default is 0 for easier progressive decoding. webp:partition-limit={0-100} Quality degradation allowed to fit the 512k limit on prediction modes coding (0: no degradation, 100: maximum possible degradation). webp:emulate-jpeg-size={true|false} If true, compression parameters will be remapped to better match the expected output size from JPEG compression. Generally, the output size will be similar but the degradation will be lower. webp:thread-level= If non-zero, try and use multi-threaded encoding. webp:low-memory={true|false} If set, reduce memory usage (but increase CPU use) webp:use-sharp-yuv={true|false} If set, if needed, use sharp (and slow) RGB->YUV conversion For example, to create a postscript file that will render only the black pixels of a bilevel image, use: gm convert bilevel.tif -define ps:imagemask eps3:stencil.ps -delay <1/100ths of a second> display the next image after pausing This option is useful for regulating the animation of image sequences Delay/100 seconds must expire before the display of the next image. The default is no delay between each showing of the image sequence. The maximum delay is 65535. You can specify a delay range (e.g. -delay 10-500) which sets the minimum and maximum delay. -density x horizontal and vertical resolution in pixels of the image This option specifies the image resolution to store while encoding a raster image or the canvas resolution while rendering (reading) vector formats such as Postscript, PDF, WMF, and SVG into a raster image. Image resolution provides the unit of measure to apply when rendering to an output device or raster image. The default unit of measure is in dots per inch (DPI). The -units option may be used to select dots per centimeter instead. The default resolution is 72 dots per inch, which is equivalent to one point per pixel (Macintosh and Postscript standard). Computer screens are normally 72 or 96 dots per inch while printers typically support 150, 300, 600, or 1200 dots per inch. To determine the resolution of your display, use a ruler to measure the width of your screen in inches, and divide by the number of horizontal pixels (1024 on a 1024x768 display). If the file format supports it, this option may be used to update the stored image resolution. Note that Photoshop stores and obtains image resolution from a proprietary embedded profile. If this profile is not stripped from the image, then Photoshop will continue to treat the image using its former resolution, ignoring the image resolution specified in the standard file header. The density option is an attribute and does not alter the underlying raster image. It may be used to adjust the rendered size for desktop publishing purposes by adjusting the scale applied to the pixels. To resize the image so that it is the same size at a different resolution, use the -resample option. -depth depth of the image This is the number of bits of color to preserve in the image. Any value between 1 and QuantumDepth (build option) may be specified, although 8 or 16 are the most common values. Use this option to specify the depth of raw images whose depth is unknown such as GRAY, RGB, or CMYK, or to change the depth of any image after it has been read. The depth option is applied to the pixels immediately so it may be used as a form of simple compression by discarding the least significant bits. Reducing the depth in advance may speed up color quantization, and help create smaller file sizes when using a compression algorithm like LZW or ZIP. -descend obtain image by descending window hierarchy -despeckle reduce the speckles within an image -displace x shift image pixels as defined by a displacement map With this option, composite image is used as a displacement map. Black, within the displacement map, is a maximum positive displacement. White is a maximum negative displacement and middle gray is neutral. The displacement is scaled to determine the pixel shift. By default, the displacement applies in both the horizontal and vertical directions. However, if you specify mask, composite image is the horizontal X displacement and mask the vertical Y displacement. -display specifies the X server to contact This option is used with convert for obtaining image or font from this X server. See X(1). -dispose GIF disposal method The Disposal Method indicates the way in which the graphic is to be treated after being displayed. Here are the valid methods: Undefined No disposal specified. None Do not dispose between frames. Background Overwrite the image area with the background color. Previous Overwrite the image area with what was there prior to rendering the image. -dissolve dissolve an image into another by the given percent The opacity of the composite image is multiplied by the given percent, then it is composited over the main image. -dither apply Floyd/Steinberg error diffusion to the image The basic strategy of dithering is to trade intensity resolution for spatial resolution by averaging the intensities of several neighboring pixels. Images which suffer from severe contouring when reducing colors can be improved with this option. The -colors or -monochrome option is required for this option to take effect. Use +dither to turn off dithering and to render PostScript without text or graphic aliasing. Disabling dithering often (but not always) leads to decreased processing time. -draw annotate an image with one or more graphic primitives Use this option to annotate an image with one or more graphic primitives. The primitives include shapes, text, transformations, and pixel operations. The shape primitives are point x,y line x0,y0 x1,y1 rectangle x0,y0 x1,y1 roundRectangle x0,y0 x1,y1 wc,hc arc x0,y0 x1,y1 a0,a1 ellipse x0,y0 rx,ry a0,a1 circle x0,y0 x1,y1 polyline x0,y0 ... xn,yn polygon x0,y0 ... xn,yn Bezier x0,y0 ... xn,yn path path specification image operator x0,y0 w,h filename The text primitive is text x0,y0 string The text gravity primitive is gravity NorthWest, North, NorthEast, West, Center, East, SouthWest, South, or SouthEast The text gravity primitive only affects the placement of text and does not interact with the other primitives. It is equivalent to using the -gravity commandline option, except that it is limited in scope to the -draw option in which it appears. The transformation primitives are rotate degrees translate dx,dy scale sx,sy skewX degrees skewY degrees The pixel operation primitives are color x0,y0 method matte x0,y0 method The shape primitives are drawn in the color specified in the preceding -stroke option. Except for the line and point primitives, they are filled with the color specified in the preceding -fill option. For unfilled shapes, use -fill none. Point requires a single coordinate. Line requires a start and end coordinate. Rectangle expects an upper left and lower right coordinate. RoundRectangle has the upper left and lower right coordinates and the width and height of the corners. Circle has a center coordinate and a coordinate for the outer edge. Use Arc to inscribe an elliptical arc within a rectangle. Arcs require a start and end point as well as the degree of rotation (e.g. 130,30 200,100 45,90). Use Ellipse to draw a partial ellipse centered at the given point with the x-axis and y-axis radius and start and end of arc in degrees (e.g. 100,100 100,150 0,360). Finally, polyline and polygon require three or more coordinates to define its boundaries. Coordinates are integers separated by an optional comma. For example, to define a circle centered at 100,100 that extends to 150,150 use: -draw 'circle 100,100 150,150' Paths (See Paths) represent an outline of an object which is defined in terms of moveto (set a new current point), lineto (draw a straight line), curveto (draw a curve using a cubic Bezier), arc (elliptical or circular arc) and closepath (close the current shape by drawing a line to the last moveto) elements. Compound paths (i.e., a path with subpaths, each consisting of a single moveto followed by one or more line or curve operations) are possible to allow effects such as "donut holes" in objects. Use image to composite an image with another image. Follow the image keyword with the composite operator, image location, image size, and filename: -draw 'image Over 100,100 225,225 image.jpg' You can use 0,0 for the image size, which means to use the actual dimensions found in the image header. Otherwise, it will be scaled to the given dimensions. See -compose for a description of the composite operators. Use text to annotate an image with text. Follow the text coordinates with a string. If the string has embedded spaces, enclose it in single or double quotes. Optionally you can include the image filename, type, width, height, or other image attribute by embedding special format character. See -comment for details. For example, -draw 'text 100,100 "%m:%f %wx%h"' annotates the image with MIFF:bird.miff 512x480 for an image titled bird.miff and whose width is 512 and height is 480. If the first character of string is @, the text is read from a file titled by the remaining characters in the string. Please note that if the string comes from an untrusted source that it should be sanitized before use (a security risk). Rotate rotates subsequent shape primitives and text primitives about the origin of the main image. If the -region option precedes the -draw option, the origin for transformations is the upper left corner of the region. Translate translates them. Scale scales them. SkewX and SkewY skew them with respect to the origin of the main image or the region. The transformations modify the current affine matrix, which is initialized from the initial affine matrix defined by the -affine option. Transformations are cumulative within the -draw option. The initial affine matrix is not affected; that matrix is only changed by the appearance of another -affine option. If another -draw option appears, the current affine matrix is reinitialized from the initial affine matrix. Use color to change the color of a pixel to the fill color (see -fill). Follow the pixel coordinate with a method: point replace floodfill filltoborder reset Consider the target pixel as that specified by your coordinate. The point method recolors the target pixel. The replace method recolors any pixel that matches the color of the target pixel. Floodfill recolors any pixel that matches the color of the target pixel and is a neighbor, whereas filltoborder recolors any neighbor pixel that is not the border color. Finally, reset recolors all pixels. Use matte to the change the pixel matte value to transparent. Follow the pixel coordinate with a method (see the color primitive for a description of methods). The point method changes the matte value of the target pixel. The replace method changes the matte value of any pixel that matches the color of the target pixel. Floodfill changes the matte value of any pixel that matches the color of the target pixel and is a neighbor, whereas filltoborder changes the matte value of any neighbor pixel that is not the border color (-bordercolor). Finally reset changes the matte value of all pixels. You can set the primitive color, font, and font bounding box color with -fill, -font, and -box respectively. Options are processed in command line order so be sure to use these options before the -draw option. -edge detect edges within an image -emboss emboss an image -encoding specify the text encoding Choose from AdobeCustom, AdobeExpert, AdobeStandard, AppleRoman, BIG5, GB2312, Latin 2, None, SJIScode, Symbol, Unicode, Wansung. -endian specify endianness (MSB, LSB, or Native) of image MSB indicates big-endian (e.g. SPARC, Motorola 68K) while LSB indicates little-endian (e.g. Intel 'x86, VAX) byte ordering. Native indicates to use the normal ordering for the current CPU. This option currently only influences the CMYK, DPX, GRAY, RGB, and TIFF, formats. Use +endian to revert to unspecified endianness. -enhance apply a digital filter to enhance a noisy image -equalize perform histogram equalization to the image -extent x{+-}{+-} composite image on background color canvas image This option composites the image on a new background color (-background) canvas image of size x. The existing image content is composited at the position specified by geometry x and y offset and/or desired gravity (-gravity) using the current image compose (-compose) method. Image content which falls outside the bounds of the new image dimensions is discarded. For example, this command creates a thumbnail of an image, and centers it on a red color backdrop image, offsetting the canvas ten pixels to the left and five pixels up, with respect to the thumbnail: gm convert infile.jpg -thumbnail 120x80 -background red -gravity center \ -extent 140x100-10-5 outfile.jpg This command reduces or expands a JPEG image to fit on an 800x600 display: gm convert -size 800x600 input.jpg \ -resize 800x600 -background black \ -compose Copy -gravity center \ -extent 800x600 \ -quality 92 output.jpg If the aspect ratio of the input image isn't exactly 4:3, then the image is centered on an 800x600 black canvas. -file write annotated difference image to file If -file is specified, then an annotated difference image is generated and written to the specified file. Pixels which differ between the reference and compare images are modified from those in the compare image so that the changed pixels become more obvious. Some images may require use of an alternative highlight style (see -highlight-style) or highlight color (see -highlight-color) before the changes are obvious. -fill color to use when filling a graphic primitive Colors are represented in GraphicsMagick in the same form used by SVG. Use "gm convert -list color" to list named colors: name (named color) #RGB (hex numbers, 4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each) #RGBA (4 bits each) #RRGGBBAA (8 bits each) #RRRGGGBBBAAA (12 bits each) #RRRRGGGGBBBBAAAA (16 bits each) rgb(r,g,b) (r,g,b are decimal numbers) rgba(r,g,b,a) (r,g,b,a are decimal numbers) Enclose the color specification in quotation marks to prevent the "#" or the parentheses from being interpreted by your shell. For example, gm convert -fill blue ... gm convert -fill "#ddddff" ... gm convert -fill "rgb(65000,65000,65535)" ... The shorter forms are scaled up, if necessary by replication. For example, #3af, #33aaff, and #3333aaaaffff are all equivalent. See -draw for further details. -filter use this type of filter when resizing an image Use this option to affect the resizing operation of an image (see -geometry). Choose from these filters (ordered by approximate increasing CPU time): Point Box Triangle Hermite Hanning Hamming Blackman Gaussian Quadratic Cubic Catrom Mitchell Lanczos Bessel Sinc The default filter is automatically selected to provide the best quality while consuming a reasonable amount of time. The Mitchell filter is used if the image supports a palette, supports a matte channel, or is being enlarged, otherwise the Lanczos filter is used. -flatten flatten a sequence of images In some file formats (e.g. Photoshop's PSD) complex images may be represented by "layers" (independent images) which must be composited in order to obtain the final rendition. The -flatten option accomplishes this composition. The sequence of images is replaced by a single image created by compositing each image in turn, while respecting composition operators and page offsets. While -flatten is immediately useful for eliminating layers, it is also useful as a general-purpose composition tool. The sequence of images is terminated by the appearance of any option. If the -flatten option appears after all of the input images, all images are flattened. Also see -mosaic which is similar to -flatten except that it adds a suitably-sized canvas base image. For example, this composites an image on top of a 640x400 transparent black canvas image: gm convert -size 640x300 xc:transparent \ -compose over -page +0-100 \ frame.png -flatten output.png and this flattens a Photoshop PSD file: gm convert input.psd -flatten output.png -flip create a "mirror image" reflect the scanlines in the vertical direction. -flop create a "mirror image" reflect the scanlines in the horizontal direction. -font use this font when annotating the image with text You can tag a font to specify whether it is a PostScript, TrueType, or X11 font. For example, Arial.ttf is a TrueType font, ps:helvetica is PostScript, and x:fixed is X11. -foreground define the foreground color The color is specified using the format described under the -fill option. -format the image format type When used with the mogrify utility, this option will convert any image to the image format you specify. See GraphicsMagick(1) for a list of image format types supported by GraphicsMagick, or see the output of 'gm -list format'. By default the file is written to its original name. However, if the filename extension matches a supported format, the extension is replaced with the image format type specified with -format. For example, if you specify tiff as the format type and the input image filename is image.gif, the output image filename becomes image.tiff. -format output formatted image characteristics When used with the identify utility, or the convert utility with output written to the 'info:-' file specification, use this option to print information about the image in a format of your choosing. You can include the image filename, type, width, height, Exif data, or other image attributes by embedding special format characters: %b file size %c comment %d directory %e filename extension %f filename %g page dimensions and offsets %h height %i input filename %k number of unique colors %l label %m magick %n number of scenes %o output filename %p page number %q image bit depth %r image type description %s scene number %t top of filename %u unique temporary filename %w width %x horizontal resolution %y vertical resolution %A transparency supported %C compression type %D GIF disposal method %G Original width and height %H page height %M original filename specification %O page offset (x,y) %P page dimensions (width,height) %Q compression quality %T time delay (in centi-seconds) %U resolution units %W page width %X page horizontal offset (x) %Y page vertical offset (y) %@ trim bounding box %# signature \n newline \r carriage return %% % For example, -format "%m:%f %wx%h" displays MIFF:bird.miff 512x480 for an image titled bird.miff and whose width is 512 and height is 480. If the first character of string is @, the format is read from a file titled by the remaining characters in the string. Please note that if the string comes from an untrusted source that it should be sanitized before use since this may be used to incorporate any readable file on the system (a security risk). The values of image type (%r) which may be returned include: Bilevel Grayscale GrayscaleMatte Palette PaletteMatte TrueColor TrueColorMatte ColorSeparation ColorSeparationMatte Optimize You can also use the following special formatting syntax to print Exif information contained in the file: %[EXIF:] Where "" may be one of the following: * (print all Exif tags, in keyword=data format) ! (print all Exif tags, in tag_number format) #hhhh (print data for Exif tag #hhhh) ImageWidth ImageLength BitsPerSample Compression PhotometricInterpretation FillOrder DocumentName ImageDescription Make Model StripOffsets Orientation SamplesPerPixel RowsPerStrip StripByteCounts XResolution YResolution PlanarConfiguration ResolutionUnit TransferFunction Software DateTime Artist WhitePoint PrimaryChromaticities TransferRange JPEGProc JPEGInterchangeFormat JPEGInterchangeFormatLength YCbCrCoefficients YCbCrSubSampling YCbCrPositioning ReferenceBlackWhite CFARepeatPatternDim CFAPattern BatteryLevel Copyright ExposureTime FNumber IPTC/NAA ExifOffset InterColorProfile ExposureProgram SpectralSensitivity GPSInfo ISOSpeedRatings OECF ExifVersion DateTimeOriginal DateTimeDigitized ComponentsConfiguration CompressedBitsPerPixel ShutterSpeedValue ApertureValue BrightnessValue ExposureBiasValue MaxApertureValue SubjectDistance MeteringMode LightSource Flash FocalLength MakerNote UserComment SubSecTime SubSecTimeOriginal SubSecTimeDigitized FlashPixVersion ColorSpace ExifImageWidth ExifImageLength InteroperabilityOffset FlashEnergy SpatialFrequencyResponse FocalPlaneXResolution FocalPlaneYResolution FocalPlaneResolutionUnit SubjectLocation ExposureIndex SensingMethod FileSource SceneType JPEG specific information (from reading a JPEG file) may be obtained like this: %[JPEG-] Where "" may be one of the following: * (all JPEG-related tags, in keyword=data format) Quality IJG JPEG "quality" estimate Colorspace JPEG colorspace numeric ID Colorspace-Name JPEG colorspace name Sampling-factors JPEG sampling factors Please note that JPEG has no notion of "quality" and that the quality metric used by, and estimated by the software is based on the quality metric established by IJG JPEG 6b. Other encoders (e.g. that used by Adobe Photoshop) use different encoding metrics. Surround the format specification with quotation marks to prevent your shell from misinterpreting any spaces and square brackets. -frame x++ surround the image with an ornamental border See -geometry for details about the geometry specification. The -frame option is not affected by the -gravity option. The color of the border is specified with the -mattecolor command line option. -frame include the X window frame in the imported image -fuzz {%} colors within this Euclidean distance are considered equal A number of algorithms search for a target color. By default the color must be exact. Use this option to match colors that are close (in Euclidean distance) to the target color in RGB 3D space. For example, if you want to automatically trim the edges of an image with -trim but the image was scanned and the target background color may differ by a small amount. This option can account for these differences. The distance can be in absolute intensity units or, by appending "%", as a percentage of the maximum possible intensity (255, 65535, or 4294967295). -gamma level of gamma correction The same color image displayed on two different workstations may look different due to differences in the display monitor. Use gamma correction to adjust for this color difference. Reasonable values extend from 0.8 to 2.3. Gamma less than 1.0 darkens the image and gamma greater than 1.0 lightens it. Large adjustments to image gamma may result in the loss of some image information if the pixel quantum size is only eight bits (quantum range 0 to 255). You can apply separate gamma values to the red, green, and blue channels of the image with a gamma value list delimited with slashes (e.g., 1.7/2.3/1.2). Use +gamma value to set the image gamma level without actually adjusting the image pixels. This option is useful if the image is of a known gamma but not set as an image attribute (e.g. PNG images). -gaussian {x} blur the image with a Gaussian operator Use the given radius and standard deviation (sigma). -geometry x{+-}{+-}{%}{@}{!}{^}{<}{>} Specify dimension, offset, and resize options. The -geometry option is used for a number of different purposes, depending on the utility it is used with. For the X11 commands ('animate', 'display', and 'import'), it specifies the preferred size and location of the Image window. By default, the window size is the image size and the location is chosen by you (or your window manager) when it is mapped. For the 'import', 'convert', 'mogrify' utility commands it may be used to specify the desired size when resizing an image. In this case, symbols representing resize options may be appended to the geometry string to influence how the resize request is treated. See later notes corresponding to usage by particular commands. The following notes apply to when -geometry is used to express a resize request, taking into account the current properties of the image. By default, the width and height are maximum values. That is, the image is expanded or contracted to fit the width and height value while maintaining the aspect ratio of the image. Append a ^ to the geometry so that the image aspect ratio is maintained when the image is resized, but the resulting width or height are treated as minimum values rather than maximum values. Append a ! (exclamation point) to the geometry to force the image size to exactly the size you specify. For example, if you specify 640x480! the image width is set to 640 pixels and height to 480. If only the width is specified, without the trailing 'x', then height is set to width (e.g., -geometry 100 is the same as -geometry 100x100). If only the width is specified but with the trailing 'x', then width assumes the value and the height is chosen to maintain the aspect ratio of the image. Similarly, if only the height is specified prefixed by 'x' (e.g., -geometry x256), the width is chosen to maintain the aspect ratio. To specify a percentage width or height instead, append %. The image size is multiplied by the width and height percentages to obtain the final image dimensions. To increase the size of an image, use a value greater than 100 (e.g. 125%). To decrease an image's size, use a percentage less than 100. Use @ to specify the maximum area in pixels of an image. Use > to change the dimensions of the image only if its width or height exceeds the geometry specification. < resizes the image only if both of its dimensions are less than the geometry specification. For example, if you specify '640x480>' and the image size is 256x256, the image size does not change. However, if the image is 512x512 or 1024x1024, it is resized to 480x480. Enclose the geometry specification in quotation marks to prevent the < or > from being interpreted by your shell as a file redirection. When used with animate and display, offsets are handled in the same manner as in X(1) and the -gravity option is not used. If the x is negative, the offset is measured leftward from the right edge of the screen to the right edge of the image being displayed. Similarly, negative y is measured between the bottom edges. The offsets are not affected by "%"; they are always measured in pixels. When used as a composite option, -geometry gives the dimensions of the image and its location with respect to the composite image. If the -gravity option is present with NorthEast, East, or SouthEast gravity, the x represents the distance from the right edge of the image to the right edge of the composite image. Similarly, if the -gravity option is present with SouthWest, South, or SouthEast gravity, y is measured between the bottom edges. Accordingly, a positive offset will never point in the direction outside of the image. The offsets are not affected by "%"; they are always measured in pixels. To specify the dimensions of the composite image, use the -resize option. When used as a convert, import or mogrify option, -geometry is synonymous with -resize and specifies the size of the output image. The offsets, if present, are ignored. When used as a montage option, -geometry specifies the image size and border size for each tile; default is 256x256+0+0. Negative offsets (border dimensions) are meaningless. The -gravity option affects the placement of the image within the tile; the default gravity for this purpose is Center. If the "%" sign appears in the geometry specification, the tile size is the specified percentage of the original dimensions of the first tile. To specify the dimensions of the montage, use the -resize option. -gravity direction primitive gravitates to when annotating the image. Choices are: NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast. The direction you choose specifies where to position the text when annotating the image. For example Center gravity forces the text to be centered within the image. By default, the image gravity is NorthWest. See -draw for more details about graphic primitives. Only the text primitive is affected by the -gravity option. The -gravity option is also used in concert with the -geometry option and other options that take as a parameter, such as the -crop option. See -geometry for details of how the -gravity option interacts with the and parameters of a geometry specification. When used as an option to composite, -gravity gives the direction that the image gravitates within the composite. When used as an option to montage, -gravity gives the direction that an image gravitates within a tile. The default gravity is Center for this purpose. -green-primary , green chromaticity primary point -hald-clut apply a Hald CLUT to the image A Hald CLUT ("Color Look-Up Table") is a special square color image which contains a look-up table for red, green, and blue. The size of the Hald CLUT image is determined by its order. The width (and height) of a Hald CLUT is the cube of the order. For example, a Hald CLUT of order 8 is 512x512 pixels (262,144 colors) and of order 16 is 4096x4096 (16,777,216 colors). A special CLUT is the identity CLUT which which causes no change to the input image. In order to use the Hald CLUT, one takes an identity CLUT and adjusts its colors in some way. The modified CLUT can then be used to transform any number of images in an identical way. GraphicsMagick contains a built-in identity CLUT generator via the IDENTITY coder. For example reading from the file name IDENTITY:8 returns an identity CLUT of order 8. Typical Hald CLUT identity images have an order of between 8 and 16. The default order for the IDENTITY CLUT generator is 8. Interpolation is used so it is not usually necessary for CLUT images to be very large. The PNG file format is ideal for storing Hald CLUT images because it compresses them very well. -help print usage instructions -highlight-color pixel annotation color Specifies the color to use when annotating difference pixels. -highlight-style