取自官网,我垃圾的翻译水平仅供我自己备忘。

关于命令行处理:

IMv6之前的版本就不要用了,官方有如下说明

In essence command line usage in versions before version 6 was ill-defined and in my thinking broken, producing numerous odd and unexpected results.

IMv6 command line Syntax:

在最少一个image被读取或者创建之前,不要给“操作”
实际上,你可以认为读取或者创建image也是一个操作
这意味着IMv6 command line syntax可以被简化为:

    command { [-setting]... "image"|-operation }... "output_image"

{...}部分是你需要的任意以确切顺序的对image的“操作”

Types of Options - Operators and Settings... :

选项的类型 - 操作选项和设置选项等等:
所有的命令行Options现在会归为两个基本的组:Settings 和 image Operators ,Settings设置值,Operators对image执行一些动作

Setting Options:

是一些将被Operator使用的信息,它们并不做任何事,只是一些待用的值。
许多Options都是带'-'或'+'的风格。'+'通常关闭设置或者重置为其默认状态。这使用可以很容易并且快速的移除一个设置的效果。比如,"+gravity" 会使gravity setting置为初始的'gravity none'状态。
Settings可以更进一步被分为一些子类...

Operator Settings

控制之后的Operator如何工作。它们设置会被Operator使用的颜色,字体,控制图像和文本的放置布局,查询源图像的颜色,控制复杂operator的处理方法,等等

    -dither -gravity -fill -background -bordercolor -stroke -font -pointsize -strokewidth -box -virtual-pixel -interpolate

大多数的设置选项(setting options)都属于这个分类。

Input Settings

Input Settings是控制被创建或被读取的图像的特别限制。典型的情况是,它们被用于分配或者覆盖 设置被定义后创建的图像的 特定的元数据 它们被创建或者从一个外部文件读取

    -label -delay -dispose -page -comment -size

记住,它们仅当一个图像被创建或者读取的时候生效,否则完全忽视。
The special operator "-set" 在图像被读取到内存后 已经被用于修改 图像的元数据 ,或者以一些方式处理

Output Settings

Output Settings只用来写或保存图像到磁盘。

Control & Debugging Settings

控制IM通常如何执行任务,包括...

    -verbose  -debug  -warnings  -quiet  -monitor  -regard-warnings

Image Operators

Image Operators 是会以某种方式修改图像的命令行参数。命令行命令解析它们的时候会立即执行,并且会使用之前的命令行setting options参数。 也可以分为几个子类...

Image Creation Operators

这个类别的操作会从文件或pipeline读取图像,或者生成新的图像,包括...

    image.png  xc:  canvas:  logo:  rose:  gradient:  radial-gradient:  plasma:  tile:  pattern:  label:  caption:  text:

As 'operators' they are also performed immediately when seen on the command line. They only add new images to those already in memory, but do not touch those previously read. 当然,任何之前定义的settings会作用在operators上。特别是input settings被用来控制输入文件或输入文件流。比如 "-size" , 表示你希望创建的图像的尺寸。或是用于定义,覆盖图像元数据的 "-delay" , "-page"。

Simple Image Processing Operators

这个分类的操作,会修改已经被读到内存中的所有图像。每个图像被独立地修改。包括如下operations...

    -crop  -repage  -border  -frame  -trim  -chop  -draw  -annotate  -resize  -scale  -sample  -thumbnail  -magnify  -adaptive-resize  -liquid-resize  -distort  -morpohology  -sparse-color  -rotate  -swirl  -implode  -wave  -flip  -flop  -transpose  -transverse  -blur  -gaussian-blur  -convolve  -shadow  --radial-blur  -motion-blur  -sharpen  -unsharp  -adaptive-sharpen  -adaptive-blur  -noise  -despeckle  -median  -negate  -level  -level-color  -gamma  -auto-level  -auto-gamma  -sigmoidial-contrast  -normalize  -linear-stretch  -contrast-stretch  -colorize  -tint  -modulate  -contrast  -equalize  -sepia-tone  -solarize  -recolor  -opaque  -transparent  -colors  -map  -ordered-dither  -random-dither  -raise  -paint  -sketch  -charcoal  -edge  -vignette  -emboss  -shade  -poloroid  -encipher  -decipher  -stegano  -evaluate  -function  -alpha  -colorspace  -separate 

由于所有的image operators会在命令行解析到的时候立即执行,它们必须给到它们要操作的图像(已经被读到内存中)之后。 如果不止有一个图像,这些图像会依次顺序被操作。你必须注意image list中都有哪些image。 需要注意,这些operators可能会生成多个images。比如 "-crop" 会生成多个image 'tiles' , 或者 "-separate" splits image into separate channel images。最终会有多个images在内存中。不过它们一次只能处理一个image。 值得注意的是,很多api仅操作image list中的第一个image。而不是依次操作每一个image。不过,CLI命令"convert" ,会依次操作image list中的每一个image

Multi-Image List Operators

这个分类的操作特殊在,它们修改整个当前的image list像修改一个实体。可以用一个combined image替换整个image list。 或者依据在其之前或之后的image,修改每个image。还用于做alpha composition,animation handling,color channel handling,etc...

    -append  -flatten  -mosaic  -layers  -composite  -combine  -fx  -coalesce  -clut  -average  -evaluate-sequence 

记住,整个image list被视为单个实体,并且一些images可能会被移除或被替换。上面的大部分operators merges all given multiple images into a final single image.
Layers Composite method 是目前唯一的会切分当前image list 为两个完全分开的image lists的operator,在merge 它们到一起之前 before merging them together to form completely new list of images. It makes the split by looking for the special 'null:' image somewhere in the current image list. 这些operators不能用在"mogrify"命令中,因为这个命令把input images list(在最后给出的)作为一个单独的images处理。

Image Stack Operators

影响内存中images list中的顺序。尤其是,提供了对images特殊的'on the side'处理。在很多方面都和上面的Image List Operator相似,不过它们实际上不修改images本身,只影响images如何在内存的排列。

    (  )  -delete  -insert  -swap  -reverse  -duplicate  -clone

在CLI中,上面圆括号 '(' 和 ')' 可能需要反斜杠或者引用符
和Multi-image List Operators不同的是,上面这些operators可以用在'mogrify'命令中,因为这个命令把input images list(在最后给出的)作为一个单独的images处理。

Miscellaneous Special Operators

是不寻常,不标准的方式(和上面的operators相比) 的操作。

    -geometry  -version  -list  -bench  -concurrent  -preview 

'-geometry' operators 是唯一一个只影响image list中最后一个image的operator,而不是以某种方式作用于所有的images。它只提供向后兼容和 特殊alpha composition的需要。关于Geometry的更多阅读

另外两个operator '-version' 和 '-list' 是生成信息的operators,并且会使IM在返回请求的信息后直接结束处理并退出。关于Special Control更多阅读

一些options甚至会使整个命令运行多次。基本上,它们以一些独特的方式被处理。

通常,只有在一些特殊的场景或者恢复特定的全局信息的情况下才会被使用。

总之,记住,under IMv6. settings以某种方式保存以供之后使用,而Operators立刻应用在image上。

这使IMv6和之前的版本的IM不同。 所有的options被定义为不是'setting'就是'operator'。并且options的顺序决定了option何时作用到哪些images上。
IM Examples Options Reference定义了哪些options是setting 而哪些又是operator。

TBD...