下面是ImageMagick图形图像处理软件命令行工具的命令行参数的详细说明。如果你需要某个特定参数的说明,在上面的导航栏中单击对应名称,就可以直接跳转到相应位置。除非另有说明,每个命令参数都可以用于convert和mogrify命令。
 
-adaptive-blur  radius [x sigma + bias ]
自适应像素模糊操作,在边缘处效果减弱。
采用给定的半径(radius)和标准差(sigma)进行高斯模糊处理。如果缺少标准差则默认为1。
 
-adaptive-resize  geometry
使用数据依赖的三角滤波进行图像的尺寸调整。
有关的几何参数的详细信息请参阅 Image Geometry 。-adaptive-resize命令默认使用数据依赖的三角滤波进行图像的尺寸调整。你也可以用-filter命令来选择其它的重采样算法。这个命令不支持geometry中偏移量(offsets)的设置,并且-gravity参数也是无效的
 
-adaptive-sharpen  radius [x sigma + bias ]
自适应像素锐化操作,在边缘处增强效果。
采用给定的半径(radius)和标准差(sigma)进行高斯锐化处理。如果缺少标准差则默认为1。
 
-adjoin
将图像文件加入到一个多图像的文件中。
此选项是默认启用的,总是尝试将图片组中的所有图像保存到一个输出文件中。但是部分文件格式如JPEG和PNG,单个文件并不支持多帧图像,在这种情况 下,ImageMagick将为每帧图像单独生成一个图像文件。因此,如果需要生成多个图像文件,将在用户给定的文件名后添加一个场景编号,以区分不同图 像文件。
使用+adjoin表示强迫图像组中的每帧图像写入到单独的文件中,不管文件格式是否允许储存多帧图像(例如GIF,MIFF,和TIFF)。
你也可以采用C语言风格的输出格式编写,在文件名中加入'%d'或'%03d'的写法,就会自动产生+adjoin的效果,并在文件名的相应位置处生成编号。例如:
convert logo: rose: -morph 15 mydmorph.jpg
将生成17张图像文件(logo和rose两张,以及-morph命令生成的15张),文件名分别为:my00morph.jpg,my01morph.jpg,my02morph.jpg,... ...,my16morph.jpg。
总之,ImageMagick默认将会尝试将所有图像写入一个文件中,如果存在下列任一情形,则会保存到多个文件中:
1、输出图像格式不允许储存多帧图像;
2、命令中包含了+adjoin参数;
3、文件名中出现了特定的参数,如"%d"。
 
-affine  sx , rx , ry , sy [, tx , ty ]
给联合旋转和缩放设置图形变换矩阵。
这个选项将设置一个图形转换矩阵,在随后的-draw或-transform参数中使用。
矩阵中数值之间采用逗号进行分割。
在变换矩阵内部应该有3x3的元素,但其中三个在输入时应该省略,因为他们是不变的常数。从原像素坐标(X,Y)变换到新坐标(X’,Y’)将使用以下的矩阵方程:

由此产生的图像的大小将是包含转换源图像的最小矩形。参数tx和ty将使图像产生移动,那些移动出图像区域的部分则被删除。
变换矩阵遵从左手像素坐标系:正向X和Y方向分别向右和向下;正向旋转方向是顺时针。
如果转换系数tx和ty省略,系统将默认为0,0。因此,四个参数就可以完成图像的旋转和缩放,但是不会产生平移效果。
参数Sx和Sy分别将在X和Y方向上产生缩放效果。
也可以参考-transform和-distort获得更多的信息。
-affine  sx ,0,0, sy
平移(tx, ty)可以写成下面的形式:
-affine 1,0,0,1, tx , ty
顺时针旋转可以表示为下列形式,其中c = cos(a), s = sin(a):
-affine c , s ,- s , c
多次仿射变换的积累效应也可以通过一次变换来完成。
系统默认会检测邻近奇异变换矩阵。如果矩阵行列式的绝对值过小,它将会被拒绝。
 
-alpha  type
控制图像的阿尔法通道(透明通道)。
用于控制是否使用现有的阿尔法通道数据,创建一个新的阿尔法通道,或对其执行其他操作。可以从以下列表中选择参数类型。
类型 描述
Activate(或On) 启用图像的透明通道。注意:一般情况下应该使用Set参数对通道进行操作,而不仅仅启用,除非你特别需要保留现有的透明通道(但不关闭)。
Deactivate(或Off) 禁用图像的透明通道。不会删除或更改现有的数据,只是不能使用这些数据。
Set 激活阿尔法通道。如果它以前关闭,那么它也将重置为不透明的通道。如果图像的阿尔法通道已经打开,将不会产生任何效果。
Opaque 启用阿尔法通道,并设定它是完全不透明。
Transparent 激活阿尔法通道,并设定它是完全透明的。它将有效地创建一个与原图大小相同的完全透明的图像,而所有其原有的RGB通道数据保持不变,但完全透明。
Extract 将阿尔法通道的值复制到其它所有的颜色通道并关闭图像的透明度,这样才能产生一个图像形状的灰度蒙版。阿尔法通道的数据不会改变只是保持未激活状态。这是“Copy”操作的逆操作。
Copy 打开阿尔法通道,然后复制图像的灰度值到阿尔法通道,将灰度蒙版转换成一个具有形状的透明蒙版,颜色通道值不会被修改。
Shape 和“Copy”操作的效果一样,并且还会使用背景色对生成的形状蒙版进行染色。也就是用相应的透明形状取代RGB颜色通道。
Background 将任何完全透明的像素设置为背景颜色,而保持它的完全透明。这可以使一些图像格式文件,例如PNG,透明像素点较少时的RGB值更均匀,从而可以实现更好的压缩。
注:+matte命令和"-alpha Off"实现的效果一样,但是-matte和"-alpha Set"的效果一样,而不等于"-alpha On"。
 
-annotate degreestext
-annotate  Xdegrees x Ydegreestext
-annotate  Xdegrees x Ydegrees  {+-} tx {+-} tytext
在图像上添加注释文字。
这是一个较为便捷的在图像上添加注释文字的方式。如果需要更加精确地控制文本注释,则需要使用-draw命令。
其中Xdegrees和Ydegrees值分别控制文字的旋转,而tx和ty设置文字距离图像左上角的偏移量,也就是起始位置。
使用-annotate degrees或-annotate degreesxdegrees命令将产生未修剪的文本旋转效果。旋转方向是正向,这意味如果degrees值为正就进行顺时针旋转。(这符合通常的数学公约,Y轴正方向指向图像的下方)。
新(转化后)图像的像素坐标(X’,Y’)与原始像素坐标(X,Y)的对应关系遵从以下的矩阵方程。

如果tx和ty参数缺省,则默认为0。这将使得文字的左下角位于图像的左上角处,这可能不是用户希望的效果。在这种情况下添加-gravity选项,会得到更好效果。
文字可以是任何UTF-8编码的字符序列。如果命令中的text参数显示为'@mytext.txt'的形式,程序将会读取mytext.txt文件。文件中的文本只保留字符内容,并支持字符格式识别。
 
-antialias
启用/禁用绘制字体和线条时的抗锯齿像素渲染。
绘制对象(如文本、线、多边形等)在默认情况下是抗锯齿的。使用+antialias选项禁用边缘像素抗锯齿渲染。然后这将减少直接绘制时图像上的生成颜色的数量。也就是说,绘制对象时将没有混合颜色添加进去。
 
-append
垂直或水平地加入当前图像。
此选项将创建一个多张图像连接而成的图像文件,将图像组中所有的图像从上至下的连接。使用+append选项则是从左至右的效果。
如果它们是不相同的宽度,窄的图像空白部分将用设置的背景颜色进行填充,它们彼此的相对位置可以由-gravity参数进行设置。
 
-attenuate  value
减弱或加强图像中增加的噪声
 
-authenticate  password
使用密码对PDF文件进行解压。
使用此选项对采用MSC API加密的PDF文档进行解密。但是不支持使用MSC API进行加密。
需要采用不同的加密方式,可以参考-encipher和-decipher。
 
-auto-gamma
自动调整图像的伽玛水平。
程序将计算图像的平均值,然后计算出最合适的伽玛值,使图像中存在的平均颜色约占所有颜色的50%。
这意味着,任何全“灰色”的图像变为50%的灰色。
这非常适用于真实生活中的照片图像和画面中极端暗区或亮区较少的图像,而对存在大量明亮的天空或阴影的图像效果就很不好。同样它也不适合处理图表或卡通图案。
还可以使用-channel来设置需要处理的颜色和通道(命令中可以包括sync标志来实现通道的同步)。系统的默认设置是'RGB,sync',通道将修改为相同的伽玛值并保持颜色。
 
-auto-level
自动地调整图像的色彩层次(图像曲线)。
这是一个“完美”的标准分布运算器。它可以精确地找到最小和最大颜色值,然后使用-level对图像直方图进行拉伸,以覆盖整个范围。
这个操作并不适用于真实生活中的照片图像、扫描的图像或JPEG格式的图片,因为每个单一的突出像素都可能被设定为最小/最大值,使它缺乏代表性。另一方面,它可以用来很好的生成梯度均匀的颜色查找表或其它通过数学运算生成的图像。
这个命令与-normalize、-contrast-stretch和-linear-stretch非常相似,但没有其它这些命令存在的“直方图分级”或“裁剪”的问题。可以认为-auto-level是其中最完美和理想的版本。
它也可以使用-channel来设置需要处理的颜色和通道(命令中可以包括sync标志来实现通道的同步)。系统的默认的+channel设置是'RGB,sync',通道将修改为相同的伽玛值并保持颜色,并且忽略透明度。
 
-auto-orient
自动调整(旋转)数码相机照片的方向。
该操作读取和复位EXIF配置文件中的方向参数,然后适时执行90度旋转,以使图像始终保持正确的查看方向。
这EXIF配置文件通常由数码相机中的重力感应器进行设置,但是垂直向上或向下的拍摄的图像可能并不会得到一个正确的方向值。使用自动调整方向可能也不能得到正确的校正。如果图像中的EXIF配置文件被去除以后,-auto-orient命令将不会产生任何效果。
 
-average
对一组图像进行平均操作。
如果图像的尺寸不同将会产生错误。
 
-backdrop
在背景的中央显示图像。[ animate display ]
背景将覆盖了整个工作站的屏幕并隐藏其它活动的X窗口,这对观看图像非常有用。背景颜色通过-background命令进行设置,具体颜色种类可以参考-fill命令下的介绍。
 
-background  color
设置背景颜色。
具体颜色种类可以参考-fill命令下的介绍。默认背景色是白色。
 
-bench  iterations
测量执行效果。
设置所有命令的重复次数,并输出运行时间。例如,根据下面的命令和它的输出,可以修改-duration以在特定时间基准点执行,或者使用-concurrent完成程序的并行处理(需要具有OpenMP功能)。
convert logo: -resize 1000% -bench 5 logo.png
Performance[4]: 5i 0.875657ips 6.880u 0:05.710
在这个例子中,程序以每秒0.875657次迭代的速度完成了5次迭代,使用分配给用户的6.88秒时间,总运行时间为5.71秒。
 
-bias  value { % }
进行图像卷积操作时,设定偏置。
这个参数将对卷积的输出进行移动,使正负结果与偏置量相关。
这个命令对ImageMagick进行非HDRI编译时处理同时包含正负值的卷积操作非常重要,特别是涉及高通滤波器的卷积或边缘检测的情况下。如果没有输出偏置,负值就会全部归零。
当ImageMagick使用HDRI编译设置时,就不需要设定偏置量,因为ImageMagick是能够存储/处理任何负值,而不会将之转换为颜色值范围内的数值(0-QuantumRange)。
有关HDRI的更多信息请参考ImageMagick的用法页或Wikipedia条目。
 
-black-point-compensation
进行黑点补偿。
 
-black-threshold  value { % }
所有低于阈值的像素全部变为黑色,高于阈值的像素则保持不变。
阈值可以是百分比或一个绝对整数值(0-QuantumRange), [0]对应至所需频道的价值。更多信息请参阅-threshold命令。
 
-blend  geometry
以给定的绝对值或百分比将一张图像融合到另一张中。[ composite ]
该命令将根据给定的百分比和每个像素的透明度对多张图像进行平均操作。如果只有一个百分比值则赋给“资源”图像,而背景图像使用其余全部值。如-blend 30%指合并30%的“资源”图像与70%的“目的”图像。因此,等同于-blend 30x70%。
 
-blue-primary  x , y
主要蓝色点染色
 
-blue-shift  factor
模拟夜晚月光照射的场景,数值从1.5开始。
 
-blur  radius
-blur  radius x sigma + bias
图像模糊操作。
采用高斯或正态分布对图像进行卷积,需要给定标准差(Sigma),方程如下:

Sigma值是一个重要参数,它将确定实际发生模糊的范围。
Radius仅用于确定计算时高斯分布数组的大小。它应该是一个整数。如果没有给出,或设置为零,IM将会计算可能的最大半径的高斯分布。
Radius值越大操作速度越慢。但是如果取值太小,则可能导致锯齿失真效果。作为一个指导原则,Radius至少应该两倍于Sigma值,虽然三倍将可以产生一个更精确的结果。
此选项不同于-gaussian-blur命令那样简单地利用分布的可分性属性。在这里,我们应用水平方向上的一维高斯矩阵,然后在垂直方向上重复该过程。
-virtual-pixel设置将决定图像外的像素如何进行模糊。
 
-blur  Width [x Height [+ Angle ]]
根据图像覆盖映射产生的可变模糊。[ composite ]
重叠区域中的每个像素都会用源图像的椭圆加权平均(EWA)值进行替换,并根据灰度映射进行缩放。
椭圆采用给定的Width和Height。Height默认等于Width进行普通的圆形高斯加权。Angle参数将从水平方向顺时针旋转椭圆形。
 
-border  geometry
设置有颜色的图像边框。
可以设置图像上下和两侧的边框宽度。有关的几何参数的详细信息,请参阅 Image Geometry 。此命令忽略偏移量。
通过在前面加入-bordercolor命令来设置边框的颜色。
-border命令将会受到-compose命令的影响,默认设定为“Over”的覆盖方式。
可以参考-frame选项,它具有更多的功能。
 
-bordercolor  color
设置边框的颜色。
颜色值采用-fill命令中指定的色彩格式。
默认的边框颜色是#DFDFDF(灰色)。
 
-borderwidth  geometry
设置边框宽度。[ animate display ]
 
-brightness-contrast  brightness
-brightness-contrast  brightness {x contrast }{ % }}
调整图像的亮度/对比度。
可以对输入图像的亮度和对比度值进行调整。它们都可以不用设置为绝对的数值。如果亮度或对比度的值为零意味着没有变化。每个值的范围都是-100 至+100。正值会增加亮度或对比度,而负值则会减少亮度或对比度。如果只调整对比度,需将亮度设置为0。如果只控制亮度,则设置对比度为0或不填写第二 个参数。
你也可以使用-channel命令来控制需要进行哪些通道的亮度/对比度调整。默认情况是对所有通道都进行相同的变化。
亮度和对比度值分别转换为图像曲线线性变换的偏移和斜率,也可以使用函数多项式中的偏移和斜率来实现(-function polynomial "slope,offset")。
对比度为-100时曲线斜率为0度,当对比度变化100时斜度变为垂直的。如果亮度=0、对比度=-100,结果是纯灰色。而如果亮度=0、对比度=100,结果也很相似,但达不到纯灰色的程度,因为线性变换中曲线在中央呈非常陡峭的垂直状态。
而这个功能无法实现负斜率,即反色的图像。所有可以实现的斜率都为零或正值。
亮度=-100对应-0.5的偏移,亮度=0对应0的偏移,亮度=+100则对应+0.5的偏移。因此,当对比度=0、亮度=100时,结果将是纯白色。同样,当对比度=0、亮度=-100时,结果是纯黑色。
由于参数值的范围是-100到+100,所以是否加入%没有太大的意义。
 
-cache  threshold
这个命令在新版中已经更换为了-limit。
 
-caption  string
指定图像的标题。
如果设置此选项后,程序将读取图像元数据中的标题信息。要修改图像内存中已有使用标题需使用“-set caption”命令。
标题中还可以包含特殊格式的字符,在-format格式说明中有详细介绍。这些属性在最后分配给图像时会自动进行扩展。
如果string参数中的第一个字符是@,图片标题将会从以@之后字符串为文件名的文件中读取。并且从文件中读取的评论文字不会嵌入字符格式。
元数据中的标题信息不会在图像中显示出来。如果需要显示的话,必须使用-annotate或-draw命令。
例如:
-caption "%m:%f %wx%h" bird.miff
产生的图片标题是MIFF:bird.miff 512x480(假设bird.miff图像宽度为512,高度为480)。
 
-cdl  filename
使用颜色列表文件进行颜色校正。
下面是一个颜色校正集的例子:
<?xml version="1.0" encoding="UTF-8"?>
<ColorCorrectionCollectio n xmlns="urn:ASC:CDL:v1.2">
<ColorCorrection id="cc06668">
<SOPNode>
<Slope> 0.9 1.2 0.5 </Slope>
<Offset> 0.4 -0.5 0.6 </Offset>
<Power> 1.0 0.8 1.5 </Power>
</SOPNode>
<SATNode>
<Saturation> 0.85 </Saturation>
</SATNode>
</ColorCorrection>
</ColorCorrectionCollectio n>
 
-channel  type
指定随后其它参数可以起作用的图像颜色通道。
可选参数包括:Red, Green, Blue, Alpha, Cyan, Magenta, Yellow, Black, Opacity, Index, RGB, RGBA, CMYK, CMYKA。
上面的通道可以指定为以逗号分隔的列表形式,也可以简写为大写字母'R', 'G', 'B', 'A', 'O', 'C', 'M', 'Y', 'K'直接串联的形式。例如,如果只选择红色和蓝色通道,你可以使用:
-channel Red,Blue
或者你也可以使用简写形式:
-channel RB
如果需要使用图像中存在的所有通道,可以指定通道类型为ALL。并非所有参数都可以指定通道进行处理,但一般可以产生灰度变换的参数都能进行通道设置。具体信息需要查看参数介绍。
 
在完成普通的通道选择之后,还可以指定一个额外的同步(sync)标志。它是默认打开的,对于支持这个标志的参数,设置同步意味着:必须对多个通道进行跨 通道的同步。如果没有设置同步,那么对于大多数进行灰度变换的参数而言,都将对每个通道(就是-channel中指定的通道)进行单独的图像处理操作。
例如,在进行-auto-level和-auto-gamma操作时,所有的颜色通道会用完全相同的方式进行修改,使各种颜色保持同步。如果没有设置同步,那么每个通道将单独进行修改,这可能会导致色彩失真。
另外,-morphology命令中的Convolve方法和-compose命令中的数学方法,在根据透明通道(如果存在)进行像素色彩修改时,同样支持同步标志。这样就可以让图像处理程序知道完全透明的颜色不应该出现在最终结果中。
基本在默认情况下,参数都设置为颜色通道同步,并将透明通道做特殊处理,除非-channel设置被修改,特意要消除同步标志的效果。每个参数具体如何同步的取决于它本身的设置,而且并非所有参数都支持这个标志,但我们会努力改变这种情况。
需要了解最详细的通道类型,可以使用-list channel命令。
 
默认情况下,ImageMagick的通道都设置为“RGBK,sync”,即除透明通道之外的所有颜色通道,并且所有颜色通道都结合它们的透明度(取决于具体操作),采用完全相同的方式进行修改。+channel的写法表示重置为默认值。
可以进行通道设置的选项包括:-auto-gamma, -auto-level, -black-threshold, -blur, -clamp, -clut, -combine, -composite (仅限数学合并方法), -convolve, -contrast-stretch, -evaluate, -function, -fx, -gaussian-blur, -hald-clut, -motion-blur, -morphology, -negate, -normalize, -ordered-dither, -radial-blur, -random-threshold, -separate, -threshold, -white-threshold。
警告,在使用+channel时,部分选项可能出现不同的效果,仍然推荐用户采用-channel进行通道设置(包括完成默认设置)。以上可能由于这些选项尚未更新同步标志的最新定义。
例如-threshold命令默认转换为灰度图像之后才进行阈值操作,如果没有进行通道设置,它就不会产生同步效果。
另外一些选项如-blur、-gaussian-blur,如果启用了阿尔法通道,那么它对其它颜色通道的处理方法将发生变化。一般来说,这样做是为了确 保完全透明的颜色始终保持它的完全透明,从而任何“隐藏”色对最终结果都不会产生影响,否则可以产生所谓的光环效应。但是,新版的-morphology 卷积等式实现了对同步标志的支持,从而可以默认对透明度完成正确的处理了。
由于图像内的阿尔法通道是可选的,一些命令会将图像的颜色通道作为阿尔法通道的灰度蒙版读入,如果当前图像没有阿尔法通道,-channel设置就会告诉命令使用阿尔法通道进行操作。-clut命令就是一个很好的例子。
 
-clamp
将图像色彩值限制在0-量子深度的范围内。
 
-charcoal  radius
-charcoal  radius x sigma + bias
生成炭笔画效果。
 
-chop  geometry
从图像内部删除像素。
有关几何参数的详细信息,请参阅geometry参数。几何参数中尺寸部分的宽度和高度决定了需要删除的列和行。而几何参数偏移量部分(如果存在)将受到-gravity设置的影响。
-chop选项将会删除整行整列,其余部分会向左和向上移动,来弥补空位。
虽然它可以删除内部的行列像素,但是通常还是和-gravity选项一起使用,并且偏移量设定为0,用来删除图像单侧的边缘。与此相似,-shave命令则是从图像两侧删除数目相等的像素。
使用-chop可以将具有相同几何参数和-gravity设置的-splice命令产生的效果消除。
 
-clip
应用编辑路径(如果该路径存在)。
如果编辑路径是存在的,它将应用于后续操作。
例如,在命令中
convert -clip -negate cockatoo.tif negated.tif
只有在编辑路径中的像素才进行反色。
-clip功能要求提供XML库。如果XML库不存在,该选项将被忽略。
 
-clip-mask
为图像引入可编辑蒙版
用给定的编辑蒙版指定当前图像序列中不可修改的区域。假设编辑蒙版是一张与内存中图像尺寸相同的灰度图像,那么任何白色的区域将不能被任何图像处理参数修改,直到蒙版被删除。在编辑蒙版黑色区域的像素将可以被正常修改。
在某些方面,这和使用-region命令定义矩形区域,或是-composite中三张图像的合并操作很类似(尽管不完全相同)。
 
-clip-path  id
导入8BImageMagick文件中的编辑路径。
和-clip命令的功能几乎一样。
 
-clone  index(s)
克隆图像。
这个命令通常放在括号内使用,它会克隆最后读入内存的一组图像序列(也就是括号中的图像序列),并将它们添加到当前图像序列的后面。如果在括号外使用(不推荐)该命令,则会克隆当前图像序列中所有的图像。
可以指定图像序列中的图像索引号,记住第一个图像的索引为0,而负的索引号将会从末尾反向开始,例如-1代表图像序列的最后一张。还能使用破折号指定一个 范围内的图像(如0-4)。用逗号(但不能用空格)可以分隔多个索引号(如0,2,5)。而“0--1”表示克隆序列中所有图像。
+clone选项表示克隆图像序列中的最后一个图像,因此也相当于使用参数“-1”。
 
-clut
使用第二张图像中的修正通道替代第一张图像中的通道值,来作为颜色查找表。
第二张(LUT)图像通常是一个渐变的图像,包含应该如何修改每个通道的直方图映射。通常它是使用替换颜色的一张单一行或列的图像。如果图像超过单独的一行或一列,那么它的值将取自从左上角到右下角的对角线。
颜色查找表还可以特别方便地使用-interpolate选项来进一步控制,而且并不需要达到ImageMagick安装质量水平的长度。插​​值设置中最好的方法是bilinear和bicubic,分别可以实现平滑的色彩渐变,和非平滑的直接整数值颜色查找表。
这个操作符特别适合用来以一个指定的颜色梯度从CLUT图像中替换出灰度图。
只有-channel选项设置的通道才会进行通道值的替换。特别由于默认的通道设置只有RGB,这意味着透明度(阿尔法通道)不会受到影响,除非修改通道 设置。当设置了阿尔法通道后,它将被-clut命令用和其它通道一样的方式进行处理,这意味着阿尔法通道值将被原始图像的阿尔法通道值所替代。
如果被修改的图像或查找表图像中都不包含透明度(即阿尔法通道是关闭状态),但-channel设置中却包括了阿尔法通道,那么程序就会假定图像代表灰度 渐变,以此来替换阿尔法值。这就是说你可以使用一张灰度颜色查找表来调整现有图像的阿尔法通道,或者你也可以使用包含了需要的颜色和透明度的颜色查找表来 给灰度图像着色。
另外,-hald-clut选项还可以根据颜色查找表将全彩RGB值从2D平面图像转换为3D彩色立方体。
 
-coalesce
义GIF动画序列每一帧图像的外观,生成像“电影剪辑”似的动画。
根据-dispose的元数据来覆盖图像序列中的每个图像,并在动画序列的每个点上重现这帧 动画。所有图像都应具有相同的尺寸,并分配了适当的GIF设置来使图片像GIF动画一样持续工作。这些帧比高度优化的GIF图像覆盖更容易查看和处理。
动画可以在使用了-layers命令的optimize方法处理后进行重新优化,虽然不能确保优化后的GIF动画比原来更好。
 
-colorize  value
使用-fill选项中指定的颜色和value指定的值对图像进行着色处理。
指定的着色值可以是百分比的形式。也可以使用逗号分隔着色值来指定应用于每个R、G、B通道的值(例如“-colorize 0,0,50”)。
 
-colormap  type
定义色图的类型。[ animate display ]
它的类型可以为shared或private。
此选项仅适用于默认的X服务器的视觉设置是伪彩色或灰度色。更多详情,请参阅-visual选项。默认情况下,共享色图是分配的。图像与其它X客户端共享 这些颜色。有些图像的颜色是近似的,因此你的图像可能会和预期效果看起来非常不同。如果选择private类型,图像的颜色就会和定义的效果完全一样。但 是,其它客户端可能就会失去漂亮的颜色。
 
-colors  value
设置图像的首选颜色值。
图像中的实际颜色值可能达不到你的要求,而从来不会有超过要求的情况。注意,它是一个色彩还原选项。如果图像中的颜色值比value指定的值要小的话,将 会删除所有重复或闲置的色彩。并且现有调色板的顺序可能会改变。从彩色图像转换到灰度图像时,在减少颜色数目数目之前先转换为灰度颜色空间会更加有效。有 关详细信息,请参阅色彩还原算法。
 
-color-matrix  matrix
对图像进行颜色修正。
此选项允许进行饱和度调整、色调旋转、透明度以及其它各种效果。虽然允许使用可变大小的变换矩阵,但通常对RGBA图像都使用5x5的矩 阵,CMYKA(或偏置的RGBA)图像使用6x6的矩阵。这和Adobe Flash中使用的矩阵类似,除了偏移量是在第6列而不是第5列(支持CMYKA图像)而且偏移量是归一化的(Flash中的值除以255)。
例如,为图像添加带偏移量的对比度,试试下面的命令:
convert kittens.jpg -color-matrix \
" 1.5 0.0 0.0 0.0, 0.0, -0.157 \
             0.0 1.5 0.0 0.0, 0.0, -0.157 \
             0.0 0.0 1.5 0.0, 0.0, -0.157 \
             0.0 0.0 0.0 1.0, 0.0,   0.0 \
             0.0 0.0 0.0 0.0, 1.0,   0.0 \
             0.0 0.0 0.0 0.0, 0.0,   1.0" kittens.png
 
-colorspace  value
设置图像的颜色空间。
可选项包括:
     CMY                   CMYK                 Gray                 HSB
     HSL                   HWB                   Lab                   Log
     OHTA                 Rec601Luma     Rec601YCbCr   Rec709Luma
Rec709YCbCr   RGB                   sRGB                 Transparent
     XYZ                   YCbCr               YCC                   YIQ
     YPbPr               YUV
如果需要显示更详细的颜色空间,可以使用-list colorspace命令查看。
如果需要更精确的RGB、CMYK和grayscale颜色空间转换,可以使用-profile选项。
RGB到其它颜色空间的转换公式
CMY
C=QuantumRange−R
M=QuantumRange−G
Y=QuantumRange−B
CMYK —首先仍然使用上面的CMY转换公式
K=min(C,Y,M)
C=QuantumRange*(C−K)/(QuantumRange−K)
M=QuantumRange*(M−K)/(QuantumRange−K)
Y=QuantumRange*(Y−K)/(QuantumRange−K)
Gray
Gray = 0.29900*R+0.58700*G+0.11400*B
HSB — 色调(Hue)、饱和度(Saturation)、亮度(Brightness)
颜色空间形如一个尖端向下的圆锥体
H=angle around perimeter (0 to 360 deg); H=0 is red; increasing angles toward green
S=distance from axis outward
B=distance along axis from bottom upward; B=max(R,G,B); intensity-like
HSL —色调(Hue)、饱和度(Saturation)、亮度(Lightness)
颜色空间形如尖端分别朝上和朝下的双锥体
H=angle around perimeter (0 to 360 deg); H=0 is red; increasing angles toward green
S=distance from axis outward
L=distance along axis from bottom upward; L=0.5*max(R,G,B) + 0.5*min(R,G,B); intensity-like
HWB — 色调(Hue)、白度(Whiteness)、黑度(Blackness)
Hue (complicated equation)
Whiteness (complicated equation)
Blackness (complicated equation)
LAB
L (complicated equation relating X,Y,Z)
A (complicated equation relating X,Y,Z)
B (complicated equation relating X,Y,Z)
LOG
I1 (complicated equation involving logarithm of R)
I2 (complicated equation involving logarithm of G)
I3 (complicated equation involving logarithm of B)
OHTA — 主要参数的近似转换公式
I1=0.33333*R+0.33334*G+0.33333*B; intensity-like
I2=(0.50000*R+0.00000*G−0.50000*B)*(QuantumRange+1)/2
I3=(−0.25000*R+0.50000*G−0.25000*B)*(QuantumRange+1)/2
Rec601Luma
Gray = 0.29900*R+0.58700*G+0.11400*B
Rec601YCbCr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Cb=(−0.168736*R-0.331264*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
Rec709Luma
Gray=0.21260*R+0.71520*G+0.07220*B
Rec709YCbCr
Y=0.212600*R+0.715200*G+0.072200*B; intensity-like
Cb=(−0.114572*R−0.385428*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.454153*G−0.045847*B)*(QuantumRange+1)/2
sRGB
if Rs ≤ .04045 then Rs=R/12.92 else Rs=((R+.055)/1.055)^2.4
if Gs ≤ .04045 then Gs=B/12.92 else Gs=((G+.055)/1.055)^2.4
if Bs ≤ .04045 then Bs=B/12.92 else Bs=((B+.055)/1.055)^2.4
XYZ
X=0.4124240*R+0.3575790*G+0.1804640*B
Y=0.2126560*R+0.7151580*G+0.0721856*B
Z=0.0193324*R+0.1191930*G+0.9504440*B
YCC
Y=(0.29900*R+0.58700*G+0.11400*B) (with complicated scaling); intensity-like
C1=(−0.29900*R−0.58700*G+0.88600*B) (with complicated scaling)
C2=(0.70100*R−0.58700*G−0.11400*B) (with complicated scaling)
YCbCr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Cb=(−0.168736*R−0.331264*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
YIQ
Y=0.29900*R+0.58700*G+0.11400*B; intensity-like
I=(0.59600*R−0.27400*G−0.32200*B)*(QuantumRange+1)/2
Q=(0.21100*R−0.52300*G+0.31200*B)*(QuantumRange+1)/2
YPbPr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Pb=(−0.168736*R−0.331264*G+0.500000*B)*(QuantumRange+1)/2
Pr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
YUV
Y=0.29900*R+0.58700*G+0.11400*B; intensity-like
U=(−0.14740*R−0.28950*G+0.43690*B)*(QuantumRange+1)/2
V=(0.61500*R−0.51500*G−0.10000*B)*(QuantumRange+1)/2
 
-combine
将多张图像合并成到一张图像中
合并的图像通道(在-channel中设置)将按顺序从序列中图像的灰度值中获得。对于默认的RGB通道设置,意味着第一张图像将分配给红色通道,第二张给绿色通道,第三张给蓝色通道。
如果通道设置是相同的话,这个选项可以被看作是-separate的逆操作。因此,在下面的例子中,最终图像应该是原图的副本。
convert original.png -channel RGB -separate sepimage.png
convert sepimage-0.png sepimage-1.png sepimage-2.png -channel RGB -combine imagecopy.png
 
-comment  string
在图像中嵌入评论。
此选项将会在读入的图像元数据中添加评论。要修改图像元数据中已经存在的评论内容,需要使用“-set comment”命令。
评论中可以包含程序允许的特殊字符格式。它们可以在评论最后分配到每张图像时根据具体属性进行扩展。
如果第一个字符是@,图像评论将从以它后面字符为文件名的文件中读取字符串。但是从文件中读取的评论文字不会识别字符嵌入的格式。
图像元数据中的评论对于图像本身是不可见的。如果要显示出来应该使用-annotate或-draw选项。
例如:
-comment "%m:%f %wx%h" bird.miff
这条命令将会产生一条图像评论MIFF:bird.miff 512x480(假设bird.miff图像的宽度为512像素、高度为480像素)。
 
-compose  operator
设置图像合并类型。
可以参考阿尔法通道合并的讲解获得更详细的信息。
此设置会影响合并两个(或更多)图像操作命令对图像的处理方式。这些命令包括:-composite, -layers composite, -flatten, -mosaic, -layers merge, -border, -frame, -extent。
它也是composite命令的主要选项之一。
 
-composite
执行两张图像阿尔法通道的合并,还包括一个可选的蒙版。
根据当前的-compose设置,将第一张destination图像重叠至第二张source图像上。其中source图像的位置通过-geometry选项来设置。
如果存在第三张图像,它将被视为与destination图像相关的一个灰度蒙版。这个蒙版可以在destination图像中设置允许进行修改的区域。不过,对于displace合并方式,蒙版将用来提供一个单独的Y位移图像。
如果-compose选项需要更多的数字参数或标志,那么可以通过使用“-set 'option:compose:args'”来进行设置。
还有一些合并方式可以修改覆盖区域外的destination图像。你可以通过设置“-set 'option:compose:outside-overlay'”为false来禁止这种行为。
 
-compress  type
写图像文件时,使用type指定的像素压缩类型。
选项包括:None, BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE, Zip。
如果需要显示压缩类型的完整列表,使用-list compress命令。
+compress选项表示采用非压缩格式对二进制图像进行储存。默认采用指定的图像文件的压缩类型。
如果设置了LZW压缩方式但该方式并不可用,那么图像会采用一种非压缩的LZW格式,并且可以使用LZW解码器读取。但这可能会导致产生的GIF文件比预期大。
Lossless方式指的是无损JPEG压缩,前提是使用可以支持它的新版JPEG库。但一般不推荐使用无损JPEG格式。
当需要写ICO文件时,你可以通过指定Zip压缩格式来让图像使用PNG格式进行编码。
使用-quality选项设置JPEG、PNG、MIFF和MPEG编码器采用的压缩级别。使用-sampling-factor选项设置JPEG、MPEG和YUV编码器进行色度通道采样时的采样因子。
 
-contrast
提高或降低图像的对比度。
此选项增强了图像的亮区和暗区之间的差异。用-contrast选项来提高图像对比度,或使用+contrast选项降低图像的对比度。
如果需要更加明显的效果,你可以重复使用此选项:
convert rose: -contrast -contrast rose_c2.png
 
-contrast-stretch  black-point
-contrast-stretch  black-point {x white-point }{ % }}
通过拉伸强度值的范围来提高图像的对比度。
如果使用了拉伸,图像中最黑的像素会达到纯黑色,而最白的像素会达到纯白色。或者如果使用了百分比,最黑的像素会达到纯黑色的相应%,最白的像素也会达到纯白色的相应%。
在此前的ImageMagick v6.4.7-0版本中,-contrast-stretch会将最黑的像素变为纯黑色,而所有小于白色的像素都变为纯白色。或者如果使用了百分比,所有小于白色相应%的像素都会变为纯白色。
注意,如果设置为-contrast-stretch 0,那么图像的最小和最大拉伸值将分别修改为0和QuantumRange,这样将不会有任何数据丢失,因为没有在任何一端进行裁剪。所有,它和 -normalize选项并不相同,后者等同于“-contrast-stretch 0.15x0.05%”(ImageMagick v6.4.7-0之前的版本“-contrast-stretch 2%x99%”)。
选项内部的工作原理是首先创建一个直方图,然后使用该图来修改图像。因此原始数据在匹配这个直方图时,部分颜色可能会被合并到一起。
如果在默认的+channel设置下,所有的通道都会进行同样的归一化操作,以保持颜色的完整性。指定任何其它的-channel通道设置,都会使RGB通道独立进行归一化操作。
参考-auto-level选项,可以获得一张完美拉伸的数学图像。
这个操作符仍然处于不断更新中。
 
-convolve  kernel
采用用户提供的卷积内核对图像进行卷积。
内核是一个用逗号分隔的整数(无空格)矩阵,顺序从左至右,从顶行开始。目前,只支持奇数尺寸的内核,因此指定内核中的参数个数必须是3^2=9,5^2=25,7^2=49等。
注意,-convolve选项支持偏置量设置。此参数通过对卷积进行移动,使结果的正负和用户指定的偏置量相关。这对于ImageMagick进行包含正 负数卷积的非HDRI编译来说非常重要。特别是涉及高通滤波器的卷积或边缘检测的情况下,如果没有输出偏置,那么所有负值都会剪切为零。
当ImageMagick使用HDRI编译设置时,偏置量就是没有必要的,因为ImageMagick是能够存储和处理任何负数结果,而不用剪裁至颜色值的范围(0 .. QuantumRange)。有关HDRI的用法请参看Wikipedia条目。
 
-crop  geometry
在图像中剪出一个或多个矩形区域。
有关几何参数的详细信息,请参阅geometry。
geometry的宽度和高度参数指的图像进行裁剪后剩余的区域尺寸,偏移量中的x和y参数(如果存在),指的裁剪后图像的左上角在原始图像中的坐标位置。若要指定需要删除的像素,可以使用-shave命令代替。
如果在几何参数的后面加上“!”,这意味着画布尺寸将和你指定的大小完全相同。
如果裁剪的图像并不在原图的画布范围内,将返回一张特殊的包含一个透明像素的图像,和一个警告信息。
另外,可能有必要使用+repage选项重置图像信息,删除-crop操作中产生的信息。
 
-cycle  amount
根据amount值替换色图。
amount定义了色图中每个条目移动的坐标数。
 
-debug  events
启用调试打印输出。
events参数指定要记录哪些事件。它可以None、All、Trace或以逗号分隔的列表,列表值包括:Accelerate, Annotate, Blob, Cache, Coder, Configure, Deprecate, Exception, Locale, Render, Resource, Security, TemporaryFile, Transform, X11, User。
例如,打印日志缓存和BLOB事件,使用下面的命令:
convert -debug "Cache,Blob" rose: rose.png
虽然用户域通常是空的,但开发人员可以记录用户在它们的私有ImageMagick副本中的事件。
要打印调试选项的完整方便列表,可以使用-list debug。
使用-log选项来指定调试输出的格式。
使用+debug关闭所有的日志记录。
调试也可以采用设置MAGICK_DEBUG环境变量的方法。 MAGICK_DEBUG环境变量允许的值与-debug选项的值是相同的。
 
-decipher  filename
解码,恢复以前编码(-encipher)的像素。
从filename指定的文件中获取口令。
了解更多信息,请参阅 ImageMagick: Encipher or Decipher an Image 网页。
 
-deconstruct
找到图像之间改变的区域。
给定尺寸相同的一组图像序列(比如使用-coalesce选项产生的),将第二张之后的图像用与当前图像不同的那部分小图替代。
处理之后的图像序列可用于优化动画序列,虽然当动画中的一部分会从不透明变为透明时,它就不能在GIF动画中正确的工作。
这个选项实际上等同于-layers选项中的compare-any方法。
 
-define  key { =value } ...
添加具体的全局设置,一般用来控制编码器和图像处理操作。
此选项将为编/解码器创建一个或多个定义,在读/写图像数据时使用。这些定义通常用来控制超出正常定义的图像文件格式编码器模块和图像处理操作。定义的具体设置将在-verbose选项信息中列出。
如果定义中缺少了value值,就会为该名称创建一个空值定义的标志,这可以用来控制开/关某个选项。使用+define key来删除先前创建的定义。使用+define "*"来删除所有创建的定义。
相同的手工设置,也可以使用“-set "option:key" "value"”命令,它在定义值中同样支持图像属性的格式化输出。
其中option和key参数是大小写不敏感的(它们在解码器中都会转换为小写),但value值是大小写敏感的。
并且这个设置是全局的,对所有图像和操作都有效。
下面的定义只是一部分可选设置:
compose:args= arguments
为使用convert命令进行-compose...-composite操作时设置固定的参数值。
distort:scale= value
设置-distort选项的输出缩放因子。
distort:viewport=WxH+X+Y
设置-distort选项的视口参数。
dcm:display-range=reset
为DCM图像格式设置显示范围的最小和最大像素值。
dot:layout-engine= value
给DOT图像格式(如neato)设置指定的布局引擎。
jpeg:extent= value
限制JPEG文件的最大尺寸,例如-define jpeg:extent=400kb。
jpeg:size= geometry
设置JPEG图像的尺寸提示,例如-define jpeg:size=128x128。在大型JPEG图像的尺寸缩减时,它对提高性能和减少内存需求非常有用。
jp2:rate= value
指定写JPEG-2000文件时使用的压缩因子。压缩因子是压缩比率的倒数。有效范围从0.0到1.0,其中1.0表示进行无损压缩。如果定义了,那么该值将覆盖-quality设置。quality设置为75等同于rate设置为0.06641。
mng:need-cacheoff
将MNG流的重播关闭。
png:bit-depth= value
png:color-type= value
设置PNG格式输出所需的位深度和颜色类型。你可以强制PNG编码器使用于通常设置不同的位深度和颜色类型,但前提是这样不会造成任何图像质量的损失。任 何降低图像质量的企图都会被认为是一个错误,然后不会进行PNG的写文件操作。例如,如果你有张1比特的黑与白图像,你可以使用defines选项将它写 成8位灰度索引图,甚至是64位的RGBA图像。但如果你有一张16万色的图像,就不能将它强制写成一张灰度图或带索引的PNG图像。如果你非要实现这个 目标,那么必须在PNG编码之前使用-depth、-colors或-type指令来降低图像的质量。请注意在带有索引的PNG文件中,“位深度”指的是 每个索引中的位数,可以是1、2、4或8。而这些文件中的颜色样本总是8位深度。
png:compression-filter= value
有效值范围是0到7,其中0-4是相应的PNG滤波器,5表示自适应滤波(除了带有色图的图像),6指为所有图像自适应滤波,7表示进行MNG压缩。
png:compression-level= value
有效值为0到9,0提供最少但最快的压缩,9通常提供最好的压缩但总是最慢的。
png:compression-strategy= value
有效值为0到4,默认情况使用哈夫曼滤波,RLE和固定的ZLIB压缩策略。如果你使用老版本的zlib,将不支持Z_RLE(1.2.0之前)或Z_FIXED(1.2.2.2之前),那么设置为3和4,将会使用zlib的默认策略。
png:format= value
有效值为png8、png24和png32。这个属性可以指定具体要使用的PNG格式,而通常在输出文件名的前面加上格式的方法很不方便,例如写成“PNG-编码ICO文件”。
png:exclude-chunk= value
png:include-chunk= value
附属块被排除或包含在PNG输出中。
value值可以使用附属块的类型如BKGD,或用逗号分隔的多个类型,或者最简单的all和none。虽然PNG附属块名是大小写敏感的,但如果愿意你可以全部使用小写名字。
“包含块”和“排除块”定义只影响PNG编码器的操作,并不影响PNG解码器的效果。
作为一个特例,如果sRGB的排除块操作中包含了gAMA,那么只有伽马值为1/2.2时gAMA才会写入,因为如果PNG文件中没有包含色彩信息,大多数解码器会假设为sRGB和gamma=1/2.2。由于列表是由左到右处理的,你可以通过单一的定义来实现:
-define png:include-chunk=none,gAMA
另一种特殊情况,如果sRGB块没有被排除并且PNG编码器确信图像中包含sRGB ICC配置文件,那么PNG编码器会写入sRGB块,而不是整个3144字节的ICC配置文件。如果要强制PNG编码器将sRGB配置文件作为iCCP块 写入输出PNG文件中,那么必须排除sRGB块。
关键的PNG块IHDR、PLTE、IDATIEND不能被排除。清单中出现任何这些条目将会被忽略。
如果辅助的PNG tRNS块被排除并且图像具有透明度,那么PNG的颜色类型将被强制设定为4或6(GRAY_ALPHA或RGBA)。如果图像不透明,那么无论tRNS块添加与否,都不会对输出图像的PNG颜色类型产生影响。
-strip选项等同于以下的PNG输出:
-define png:include-chunk=none,trns,gama
默认设置是包括所有已知的PNG配套块,外加ImageMagick的私有vpAg(virtual page)块,并排除所有ImageMagick未知的PNG块,不论图片的PNG描述规范中的“copy-safe”状态是如何设定的。
任何在“包含块”和“排除块”列表中出现的ImageMagick不知道的PNG块都将会被忽略。目前已知的ImageMagick的配套块包括 bKGD, cHRM, gAMA, iCCP, oFFs, pHYs, sRGB, tEXt, tRNS, vpAg, zTXt。
你也可以把日期写入列表中来实现添加或排除“Date:create”和“Date:modify”文本块,通常在输出的PNG图像中ImageMagick插入了这个块。
png:preserve-colormap
使用现有图像的色图(colormap)。通常情况PNG编码器将会尝试优化调色板,删除未使用的条目,并且首先删除透明颜色。如果设置了这个标志,这种行为就会受到限制。
ps:imagemask
如果ps:imagemask标志进行了定义,那么PS3和EPS3编码将会为双层图像的PostScript文件创建imagemask选项而不是创建image选项。
quantum:format= type
将类型设置为浮点数(floating-point)可以指定一个浮点格式的原始数据文件(如GRAY:)或使HDRI模式下MIFF和TIFF图像保持 其中的负值。如果包含了“-depth 16”设置,其结果就是一个单精度的浮点格式。如果包含了“-depth 32”,结果是双精度的浮点格式。
showkernel=1
输出(标准错误)生成的-morphology内核中的所有相关信息。
tiff:quantum:polarity=min-is-black
tiff:quantum:polarity=min-is-white
切换光度测定的解释
tiff:rows-per-strip= value
设置每带(strip)中包含的行数
tiff:tile-geometry= WxH
设置金字塔形TIFF文件的拼接尺寸,需要在输出文件(outputname)前添加后缀PTIF。
例如,要创建一个PostScript文件,将只呈现出一个双层图像的黑色像素,那么使用:
convert bilevel.tif -define ps:imagemask eps3:stencil.ps
设置图像的注册表属性可以通过在图像的前缀registry:后添加注册表值来实现。例如要给工作文件设置一个临时的路径,使用:
-define registry:temporary-path=/data/tmp
 
-delay  ticks
-delay  ticks x ticks-per-second  { < } { > }
在暂停后显示下一张图片。
此选项对于调节动画图像序列的跳(ticks)/跳每秒(ticks-per-second)的时间非常有用,前一张图片必须在下一张图片显示前到期。默认情况是图像序列中的每张图像之间的显示没有延迟。默认跳每秒的值为100。
使用“>”表示只有图像当前的值大于设定的延迟时才改变图像的延迟。“<”表示只有当前的延迟值小于给定的值时才改变图像的延迟。例如,如果 您指定“30>”并且现在图像的延迟值为20,那么图像的延迟将不会改变。但是,如果现在图像的延迟值是40或50,那么命令就会将它改为30了。 最好将给定的延迟值用引号括起来,以防止“<”或“>”被你的shell程序解释为文件重定向标志了。
 
-delete  indexes
根据指定的索引号从图像序列中删除图像。
指定序列中图像的索引号。第一个图像的索引号为0。负值索引号是相对序列的尾部进行计数的,例如,-1代表该序列的最后一张图像。可以使用破折号来指定一 个范围的图像(如0-4)。还可以用逗号分隔不同的索引号(如0,2)。使用+delete命令将删除当前图像序列的最后一张图像。
 
-density  width
-density  width x height
设置图像在设备中显示的水平和垂直分辨率。
此选项会在文件编码成光栅图像时指定图像的分辨率,并且在读入矢量格式如PostScript、PDF、WMF、SVG等成为光栅图像时指定画布的分辨 率。图像分辨率为输出设备或光栅图像的显示提供了使用的度量单位。默认度量单位是点数每英寸(DPI)。-units选项也可以选择点数每厘米作为度量单 位。
默认分辨率为72 DPI,这就相当于每个像素包含一个点(Macintosh和Postscript标准设置)。电脑屏幕通常是72或96 DPI,而打印机通常支持150、300、600或1200 DPI。要确定你的显示器分辨率,可以用一把尺子来测量屏幕的宽度(单位英寸),然后除以屏幕的水平像素(如1024x768显示屏中的1024)。
如果文件格式支持的话,此选项还可用于更新图像的分辨率。请注意,Photoshop存储和获取图像分辨率将从一个专有嵌入的配置文件中得到。如果此配置文件被从图像中删除,那么Photoshop将使用前一张图像的分辨率,而忽略标准文件头中指定的图像分辨率。
-density选项设置的属性,并不会改变基本的光栅图像。它可以通过调整像素的规模来实现校正桌面出版系统显示尺寸的目的。如果要在不同的分辨率下显示相同的尺寸,那么需要使用-resample选项来调整图像尺寸。
 
-depth  value
图像的深度。
它是指一像素的颜色样本中包含的数据比特位。使用此选项来指定未知深度的原始图像的深度,如GRAY、RGB或CMYK,或改变任何读入内存的图像的深度。
 
-descend
降低窗口的层级来获得图像
 
-deskew  threshold
拉伸图像。对于大多数图像采用40%的门限值。
使用“-set option:deskew:auto-crop width”命令来自动裁剪图像的宽度。设置的参数是图像背景的像素宽度(如40)。
 
-despeckle
减少图像中的斑点。
 
-direction  type
设置文本从左至右或者从右至左的方向。
 
-displace  horizontal-scale
-displace  horizontal-scale x vertical-scale
根据置换图对图像像素进行位移操作。[ composite ]
使用此选项,重叠图像和选择蒙版如下都可以作为置换图,它们将用来取代查找表,控制背景图像中覆盖区域的每个点是否可以被看见。置换图就像是一个“镜头”,可以重定向闪光灯照射的方向原始的背景图像之后的图像呈现出来。
置换图中的任何纯灰色区域将不会使图像中的像素发生位移。黑色区域将使查询点产生最大的负位移,而白色区域会让查询点产生最大的正位移。
请注意,它是背景图像中被替换部分的查找表,而不是图像本身的位移。例如置换图中包含白色的区域将会让查询点实现正位移,从而生成的目标图像副本将处于向右/向下的正确位置。看起来就像是原图被移动到向左/向上的地方。理解这一点对于理解置换图是如何工作的非常重要。
给定的参数定义了在一个特定的置换图中可以产生的最大像素位移。如果位移值非常的大,它也可以允许背景图像中的查询点超出置换图本身的界限区域。这就让你可以很容易地将原始图像覆盖区域外的部分复制到区域内。
“%”标志表示位移量相对于叠加图像的百分比(100%=半宽/图像高度)。使用“!”可以将百分比参数的参考图像尺寸换为目标图像的。这些标志在IM v6.5.3-5版本中加入的。
通常情况下提供单一的灰度位移图,给定的比例值将决定一个位移发生的方向(正值或负值)。但是,如果你还指定了第三张图像,通常是用作蒙版的,那么合并图 像(composite image)将用于控制水平X位移,而蒙版图像(mask image)用于垂直Y位移。这允许你定义完全不同的X和Y方向的位移值,并且可以查找scale范围内的任何一点。换句话说,就是每个像素都可以查找它 附近任何其它像素,来产生复杂的二维位移而不是简单的一维向量位移。
此外,除了IM v6.4.4-0版本中的提供两个单独图像的方式,你还可以使用覆盖图像的red通道来指定水平或X位移,green通道指定垂直或Y位移。
在IM v6.5.3-5版本中,任何覆盖图像中的阿尔法通道都将用来作为目标图像的透明度蒙版。但是不会影响覆盖区域外的部分。
 
-display  host:display[.screen]
指定连接的X服务器。[ animate display ]
这个选项在convert命令中是用来从X服务器上获取图像或字体。
 
-dispose  method
定义创建或读入的GIF图像处理设置。
层处理方法定义了每帧显示的图像被修改的方式,它发生在动态图像的当前帧结束显示后(在它的延迟后),但在下一帧动画覆盖到显示屏上前。
下面是有效的方法:
未定义(Undefined)0无指定的处理方法(相当于“None”)。
无(None)1不进行处理,只只简单的覆盖下一帧图像。
背景(Background)2清除帧区域中的背景颜色。
之前(Previous)         3       将图像清理到这个帧叠加前的状态。
你也可以使用上面给出的数字,它是GIF格式内部使用的代表上述设置的编号。
要打印处置方法的完整列表,请使用“-list dispose”。
使用+dispose命令将关闭该设置,并阻止重置该层处置方法的图像被读入。
使用-set 'dispose'的方法来设置已经读入在内存中图像的处理方法。
 
-dissimilarity-threshold  value
子图像匹配的最大RMSE(默认为0.2)。[ compare ]
 
-dissolve  src_percent [x dst_percent ]
根据给定的百分比将图像溶解到另一张图像中。[ composite ]
合并图像的不透明度将乘以给定的百分比,然后与主体图像进行合并(Over方法)。如果src_percent大于100,那么会对主体图像进行溶解,当值达到200时主体图像将变得完全透明。如果选项中的两个百分比都给定了,那么每个图像都将溶解到给定的百分比。
请注意,如果选项中一个百分比都没给定,那么两个不透明图像将溶解为“50,50”,产生出75%的透明度。对于50%+50%的两个图像的融合,你需要使用溶解值“50,100”来实现。
 
-distort  method arguments
使用给定的方法和所需的参数对图像进行扭曲操作。
参数(arguments)是一个字符串,其中包含了使用逗号或空格分隔的浮点数列表。浮点数的个数和含义取决于所使用的扭曲方法(method)。
下列的扭曲类型可供选择:
方法(Method) 描述(Description)
ScaleRotateTranslateSRT 扭曲图像时,首先将一个给定的“中心”进行缩放和旋转,然后再将“中心”按顺序转换到新的位置。它是“Affine”扭曲类型的替代方法,但没有剪切效果。它还提供了一个更好的方法来实现旋转或将小图像平铺到一张更大的背景中(IE 2维动画)。
参数的个数确定了每个参数的具体含义,包括缩放、旋转、转换等操作。
#参数的意义
1:角度(旋转)
2:缩放,角度
3:X,Y,角度
4:X,Y,缩放,角度
5:X,Y,缩放X,缩放Y,角度
6:X,Y,缩放,角度,新建X,新建Y
7:X,Y,缩放X,缩放Y,角度,新建X,新建Y
这实际上是2维线性仿射(Affine)或AffineProjection扭曲的一种替代方法。
Affine 通过移动至少3个或更多的控制点(定义见下文)来对图像进行线性扭曲。理想的情况下是根据这三个点提供3组或12个浮点值,使图像完成线性缩放、旋转、剪切和转换。相关信息请参阅“AffineProjection”和“SRT”扭曲。
如果给定了超过3组的控制点对(12个),那么将使用最小二乘法来实现线性仿射扭曲的最佳匹配。如果只有2个控制点对(8个),那么只能进行两个点的图像 平移旋转和缩放操作,不会进行任何的剪切、翻转或变化结果图像的宽高比。如果只提供了一个控制点对,那么图像只会完成移动(可以进行浮点数,即非整数的移 动)。
这种扭曲,不包括任何形式的透视畸变。
AffineProjection 使用给定6个计算系数的仿射矩阵,形成了一个源图像到目标图像的仿射方程进行图像的线性扭曲。
sx, rx, ry, sy, tx, ty
参看-affine选项获得更多的细节和这些系数的含义。
“Affine”和“SRT”扭曲方法提供它的替代方法,ImageMagick为我们自动提供了所需的计算系数。你还可以通过使用-verbose选项和其它变量,来看到程序内部产生的系数。
BilinearForward
BilinearReverse
双线性扭曲,最少需要4组坐标对或16个值(见下文)。如果不这样的话,扭曲操作后直线可能会变得弯曲,虽然坐标之间的距离仍然保持一致。
“BilinearForward”是将矩形映射为任何形状的四边形,而“BilinearReverse”是把任何形状的四边形映射到一个矩形中,同时在每种情况下都会保留直线边缘。
请注意,“BilinearForward”在使用-mattecolor颜色设置时可能会产生无效的彩色像素。此外,如果四边形进行了“翻转”,那么图像可能会消失。
在未来,我们计划设计一个真正的双线性扭曲,将尝试将任何形状的四边形映射为其它任何形状的四边形,同时保留边缘(以及边缘的距离比)。
Perspective 透视扭曲图像,使用4个或更多的控制点(定义见下文)。如果多于4组控制点(16个),将会利用最小二乘法实现更准确的扭曲(达到图像配准和全景的效果)。如果小于4组,将会执行线性仿射扭曲。
透视扭曲的图像可以确保直线在变换后仍为直线,但扭曲图像的缩放将有所不同。其中地平线都是反锯齿的,而“天空”的颜色可以使用-mattecolor选项进行设置。
PerspectiveProjection 进行一次透视扭曲需要预先准备8个计算系数。你可以通过使用-verbose选项查看透视扭曲输出的详细系数,或通过自己计算来得到这些系数。如果最后两个角度缩放系数均为零,其余6系数就相当于一个转置仿射矩阵。
Arc 根据给定的角度对图像进行一个弧形扭曲变化。
参数含义
arc_angle图像进行弧形变化的角度
rotate_angle图像相对于垂心的旋转角度
top_radius图像顶部边缘弧度半径
bottom_radius图像底部边缘弧度半径(径向缩放)
结果图像总是被调整到最合适的尺寸,(如果使用+distort)同时试图保持用户给定参数的最大缩放和原始图像的宽高比。需要使用所有四个参数来改变一个弧形变化后图像的整体宽高比。
这是polar扭曲的一个变体,设计它就是为了尽量保持图像的宽高比,而不是对polar扭曲使用直接的笛卡尔变换。
Polar 和“Arc”操作相似,但要对图像的Polar操作做一次完整的笛卡尔变换。也就是输入图像的高度映射到半径限制上,而宽度是包含在角度限制之间。
参数:Rmax,Rmin,CenterX,CenterY, start,end_angle
所有参数都是可选的的。Rmin默认为零,就是从中心到图像的中心,角度范围从-180(顶部)到180(顶部)。如果Rmax值为特殊的0,那么从中心 到最近边缘的距离将用于输出图像的半径,这可以确保整个图像是可见的(虽然尺寸较小)。另外一个特殊值“-1”,将使用从中心到最远角落的距离,这可能会 获取到输入矩形图像的角落,会产生“DePolar”使用同样参数的反向效果。
如果使用+形式的扭曲(+distort),那么输出图像的中心将默认为虚拟画布的(0,0)处,并且图像调整尺寸来确保输入图像在虚拟画布上的输出图像中是可见的。
DePolar 和Polar扭曲选项使用相同的参数和含义,但是与Polar扭曲实现了反向的笛卡尔扭曲。
如果将参数Rmax设置为特殊的0,就可能将输入图像的角落剪切掉。但是,如果Rmax设置为特殊的-1(中心到角落的最大距离),将确保整个扭曲的图像 都保留在生成的结果中,因此如果在Polar中使用同样的参数,将颠倒重新生成的扭转图像。请注意,这种失真需要重新采样圆弧区域,并且不能使用内建的 EWA重采样功能。因为这种正常的EWA过滤器会被关闭。我们建议采用某种形式的“超级采样”图像处理技术来产生高质量的结果。
Barrel 给定由Helmut Dersch定义的四个系数(A,B,C,D),执行桶形或枕形扭曲来适当的修正径向镜头扭曲。就是在照片中让直线保持直的状态。
参数:A B C [ D [ X , Y ] ]
或Ax Bx Cx Dx Ay By Cy Dy [ X , Y ]
因此,它构成了下列函数
Rsrc = r * ( A*r3 + B*r2 + C*r + D )
其中X和Y是可选的扭曲中心(默认为图像的中心)。
第二种形式通常用于扭曲图像,而不是修正镜头扭曲。
BarrelInverse 这个方法与“Barrel”非常的类似,并且具有相同的参数设置和参数处理。但是,它使用的是径向多项式的倒数,使其形成下列函数
Rsrc = r / ( A*r3 + B*r2 + C*r + D )
请注意,这并不是“Barrel”扭曲的反向,只是不同桶状的径向扭曲方法。
Shepards 使用逆平方距离插值方法(Shepards方法)扭曲控制点列表(任何数字)。生效的控制点会将图像放置到给定的控制点周围(保持图像的外观和控制点附近 区域的旋转)。为获得最佳结果,应该加入额外的控制点来锁定角落、边缘和其它图像不变部分的位置,以防止它们移动。
这种扭曲方法就像用钉子或针将太妃糖似的胶状块卡住,然后将它转移到新的位置,产生的扭曲表面。
在内部,它相当于使用-sparse-color同名的方法来产生源图像颜色查找表的位移地图(见-displace)。
要打印扭曲方法的完整列表,使用-list distort。
上面许多扭曲方法比如“Affine”、“Perspective”、“Shepards”都使用控制点列表来定义如何使给定图像中的控制点被扭曲到目标图像中去。每组4个浮点值都表示源图像坐标和紧接它的目标图像坐标。这样就产生了一个如下列列表的形式:
U1,V1 X1,Y1 U2,V2 X2,Y2 U3,V3 X3,Y3 ... Un,Vn Xn,Yn
其中,源图像中的(U,V)将映射到目标图像上的(X,Y)。
例如,使用“perspective”方法来扭曲图像需要至少4组坐标(或16个数字)的列表。下面是程序内置“玫瑰”图像的perspective扭曲。注意命令中如何使用4组空间坐标对,以使其更易于阅读和理解。
convert rose: -virtual-pixel black \
-distort Perspective '0,0,0,0 0,45,0,45 69,0,60,10 69,45,60,35' \
rose_3d_rotated.gif

如果给定了超过要求数量的坐标对,那么扭曲方法将采用最小二乘法拟合所有给定的坐标对以产生最好的结果。如果达不到理想的数量,那么扭曲操作通常会下降为更简单的可以出来较少坐标对的扭曲形式(通常是线性仿射(Affine)扭曲)。
通过使用更多的坐标点,你可以利用图像配准工具找到重叠图像中匹配的坐标对,从而获得更合适的扭曲效果。当然一组不正确的坐标对也可以产生非常不合适的扭曲。必须始终保持谨慎。
当放大图像时,需要根据-interpolate颜色查找设置从源图像中获得颜色值。但是,如果显示的图像被缩小了,那么就会使用一个特殊的区域重采样函 数(在ImageMagick v6.3.5-9版本中增加的)来产生更高质量的图像。例如,你可以使用“perspective”扭曲来查看一个无限平铺的“飞机”直到地平线上。
convert -size 90x90 pattern:checkerboard -normalize -virtual-pixel tile \
-distort perspective '0,0,5,45 89,0,45,46 0,89,0,89 89,89,89,89' \
checks_tiled.jpg

请注意,无限平铺perspective图像一直到地平线,生成的速度是非常缓慢的,因为使用了高品质的区域重采样功能(在ImageMagick v6.3.5-9版本中增加的)。你可以关闭区域重采样功能,通过使用-filter选项的“point”设置。
如果图像产生了无效的像素,比如perspective扭曲例子中的“天空”像素,-distort选项将使用-mattecolor设置来处理这些像素。如果你不想让这些像素显示处理,那就将颜色设置为匹配其余背景的值。
默认情况下,输出图像的大小与输入图像相同。这意味着如果扭曲图形的一部分被移动到了显示区域的外面,这些部分就会被裁剪和丢失。然而,如果你使用选项加 号的形式(+distort)将会尝试(如果可能的话)显示出整个扭曲的图形,同时保持正确的虚拟画布偏移和图像层次感。这个偏移需要使用+repage 选项来删除如果你不想保存这个值的话。
你也可以使用一个特殊的“-set option:distort:viewport {geometry_string}”设置来指定扭曲图形空间中生成扭曲图像的尺寸和偏移量。
添加“-set option:distort:scale {scale_factor}”命令可以根据其中的scale_factor调整输出图像(视口或以其它方式)的尺寸,而不改变扭曲图像的显示内容。这可 以用于生成高质量图像的“超级采样”操作,或者围绕的图像平移和缩放操作(通过适当的视口变化,或在扭曲后切割和调整)。
设置-verbose选项,将导致-distort命令试图输出其内部系数,-fx就相当于扭曲操作,这个可用于专业研究和调试。但是,这不是所有的扭曲操作都提供的。
仿射旋转和倾斜(如SRT扭曲)操作往往会比相似的-rotate和-shear选项产生一个更加精确的结果,因为它提供了更多的控制设置。但是复杂的算法会使变换比较慢,相信在ImageMagick的改进版本中这种情况会得到改善。
 
-dither  method
图像在进行一般的色彩还原或自动保存到指定的格式时,采用Riemersma或Floyd-Steinberg误差扩散抖动处理。在默认情况下它是启用的。
抖动将混合两个或多个相邻像素的颜色,使眼睛看见的图像更接近于它原来颜色的重现。这减少了重现图像时所需要的色彩,但也造成了较低水平的颜色模式。误差扩散抖动可以使用图像中的任何颜色集(生成的或用户自定义的)。
抖动是默认打开的,如需将其关闭使用选项的加形式+dither。这也将同时呈现没有文字或图形锯齿的PostScript。禁用抖动通常(但并不总是)可以达到更快的处理速度,更少的颜色数量,和更卡通的图像色彩。通常会导致在色彩渐变的区域产生色带效果。
-colors、-monochrome、-remap和-posterize等色彩还原选项使用它们自己创建的还原色来进行图像抖动。这些选项也作为自动色彩还原操作的一部分,用来将图像保持为限制颜色的格式,如GIF和XBM等,所以抖动也可以在这些情况下使用。
另外,你还可以使用-random-threshold选项来产生纯粹的随机抖动。或者使用-ordered-dither进行门限映射抖动模式,它将使用统一的色图,而不是具体的色图。
 
-draw  string
使用一个或多个图元来注释图像。
使用此选项并采用一个或多个图元来注释或装饰图像。图元包括图像的形状、文本、变换和像素操作。
形状图元:
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
文本图元:
text                       x0,y0 string
文本gravity图元:
gravity                 NorthWest, North, NorthEast, West, Center,
                                     East, SouthWest, South, or SouthEast
文本的gravity图元只影响文本的位置而不影响其它图元。这相当于使用-gravity命令行选项,除了这是被限制在-draw选项显示的有限范围内。
变换图元:
rotate         degrees
translate   dx,dy
scale           sx,sy
skewX           degrees
skewY           degrees
像素操作图元:
color   x0,y0 method
matte   x0,y0 method
形状图元将使用-fill选项设置的颜色进行图像的颜色填充。如果不需要填充形状颜色,请使用“-fill none”。你还可以使用-stroke 和-strokewidth选项随意控制形状的轮廓。
点(point)图元需要在像素平面中指定一个点,即是一对有序的整数坐标x和y。(由于只涉及单个像素点,因此不受-stroke或-strokewidth影响)
线(line)图元需要设置一个起点和一个终点。
矩形(rectangle)图元需要指定一对点分别是左上角和右下角。
圆边矩形(roundRectangle)图元也需要指定左上角和右下角的一对点,并且还要接着指定圆角横向和纵向的宽度。
圆形(circle)图元可以生成盘状(填充)或圆环(空心)。只用指定中心点和边界上的任何一点。
弧形(arc)图元用于在给定的矩形中显示一段椭圆弧。需要设置矩形的两个对角点,然后是弧形的起始点和终止点的角度(如130,30200,10045,90)。并且产生的起点和终点会通过线段连接起来,椭圆段也会被填充。
使用椭圆(ellipse)可以绘制部分(或完整)的椭圆形。给定中心点、横向和纵向半径,并指定开始和结束的角度(例如100,100100,1500,360)。
折线(polyline)和多边形(polygon)图元需要三个或更多的点来定义它们的周长。折线是一个简单的多边形,只是在起点和终点没有连接。当没有填充时,这就是一个折线。如果-stroke设置为none(默认),那么折线就是完全相同的多边形。
坐标就是用空格或逗号分隔的一对整数。
下面介绍一个例子,将圆形中心点定义在(100,100),并一直延伸到(150,150)。
-draw 'circle 100,100 150,150'
贝塞尔(Bezier)图元会创建一条曲线,需要三个或以上的点来确定其形状。第一个和最后一个点是结点,中间的坐标都是控制点。如果指定了两个控制点, 那么结点和靠近的控制点之间的线段决定那端曲线的切线方向。如果指定了一个控制点,那么控制点和结点之间的线段觉得了每端的切线方向。如果指定了两个以上 的控制点,那么额外控制点的作用结合起来,以确定曲线的中间形状。如果要绘制复杂的曲线,强烈建议你使用路径(path)图元,或绘制多个四点贝塞尔曲线 段。例如:
-draw 'bezier 20,50 45,100 45,0 70,50'
-draw 'bezier 70,50 95,100 95,0 120,50'
路径(path)代表一个对象的轮廓,定义了moveto(设置新的当前点)、lineto(绘制直线),curveto(绘制贝塞尔曲线)、arc(椭 圆形或圆弧)和closepath等方面。复合路径(即用于子路径的路径,它们每个都包含了单一的moveto在一个或多个直线或曲线操作之后)可以允许 产生出甜甜圈效果的图像。(见 Paths
使用image方法将一张图像与另一幅图像合并。图像关键字包括合并选项、图像位置、图像尺寸和文件名。
-draw 'image SrcOver 100,100 225,225 image.jpg'
你可以使用0,0作为图像的尺寸,这表示使用图像头中发现的实际尺寸。否则,它将被缩放到给定的尺寸。阿尔法通道合并方法的详细讨论请看 Alpha Compositing 。使用了特殊参数的合并选项如-dissolve目前还不能和-draw image命令一起使用。
使用text方法可以在图像中注释文字。在文本字符串之前设置它的坐标。如果字符串中包含空格,需使用单引号或双引号括起来。
例如,下面的例子将对文件名为bird.miff的图像注释Works like magick!文字。
-draw "text 100,100 'Works like magick!' "
请参阅-annotate选项获得另一种为图像注释文字的更加方便的方法。
旋转(rotate)图元将相对于原始图像旋转随后的形状图元或文本图元。如果-region选项处于-draw选项之前,那么转换的起始点就是该区域的左上角。
变换(translate)图元将对随后的形状和文本进行变换操作。
scale图元将缩放图像的原始尺寸。
skewX和skewY图元将会对主体形象或指定区域进行倾斜。
变换操作将会修改当前的仿射矩阵(最初的-affine选项定义的初始仿射矩阵)。变换操作将作用于-draw选项。而初始仿射矩阵将不受影响,它只能使用另一个-affine选项才能改变。如果出现另一个-draw选项,当前的仿射矩阵将被重新初始化为最初的仿射矩阵。
使用color图元将一个像素的颜色改变为填充颜色(见-fill)。在像素坐标后方法:
point
replace
floodfill
filltoborder
reset
考虑到目标像素是采用坐标指定的。“point”方法会重新对目标像素着色。“replace”方法会对任何与目标像素颜色相匹配的像素进行重新着色。 “floodfill”方法对任何与目标像素颜色相匹配并且相邻的像素进行重新着色。而“filltoborder”方法会对任何相邻的非边框颜色的像素 进行重新着色。最后,“reset”会对所有像素进行重新着色。
使用matte方法将像素的磨砂值变为透明的。在像素坐标后添加方法名(参见color图元的方法描述)。“point”方法改变目标像素的磨砂值。 “replace”方法改变任何与目标像素颜色相匹配的像素的磨砂值。“floodfill”方法改变任何与目标像素颜色相匹配并且相邻的像素的磨砂值, 而“filltoborder”方法会改变任何非边框颜色的邻居像素的磨砂值。最后,“reset”方法改变所有像素的磨砂值。
你可以设置初始颜色、字体、字体边界框颜色填充通过-fill、-font和-box选项,而且这些选项将按照命令顺序进行处理,所以一定要在-draw选项之前使用。
以数字开头的字符串必须用引号括起来(如使用'1.png',而不是1.png)。
 
-duplicate  count,indexes
复制图像一次或多次。
指定复制次数和要复制的图像在序列中的索引号。第一张图片的索引号为0。负索引号是相对于序列的末尾进行计算的,例如,-1代表序列中最后一张图像。用破 折号(如0-4)指定一个范围内的图像。用逗号作为分隔的标志(如0,2)。使用+duplicate命令复制当前图像序列最后一张图像。
 
-edge   radius
探测图像的边缘。
 
-emboss   radius
使图像生成浮雕效果。
 
-encipher   filename
加密像素文件,稍后可以使用-decipher进行解密。
通过filename指定口令。
更多信息请参考 ImageMagick: Encipher or Decipher an Image
 
-encoding   type
指定文本的编码类型。
编码类型包括:AdobeCustom, AdobeExpert, AdobeStandard, AppleRoman, BIG5, GB2312, Latin 2, None, SJIScode, Symbol, Unicode, Wansung。
 
-endian   type
指定图像的字节顺序(最高有效位MSB或最低有效位LSB)。
需要打印endian选项的完整type类型,使用“-list endian”命令。
使用+endian选项还原为未指定字节顺序的状态。
 
-enhance
使用数字滤波器来增强噪声图像。
 
-equalize
按通道进行图像的直方图均衡化。
在图像的所有通道上执行直方图均衡化操作,将图像转换为其它的一些颜色空间,例如HSL、OHTA、YIQ或YUV,然后对适当的通道进行均衡,最后将其转换回RGB图像。
例如,对于使用HSL颜色空间,我们就有下面几种命令:-colorspace HSL; -channel lightness; -equalize; -colorspace RGB等。
对于YIQ、YUV和OHTA将使用红色通道。例如,OHTA是一个主要组成部分的转换,它将大部分的信息放在了第一个通道中。在这里我们有:-colorspace OHTA; -channel red; -equalize; -colorspace RGB等。
 
-evaluate   operator value
通过评估算法、关系式或逻辑表达式来改变通道的像素。
(参见-function选项了解多参数函数。参见-fx选项,如果需要进行更复杂的计算。)
在下面的列表中总结了每个operator的含义。为简便起见,以下简称“像素”的数值是相应通道的像素值,而“归一化像素”是指这个数字除以最大 QuantumRange值(安装时确定的)。(如果使用了归一化像素,在进行其它计算时,需要乘以QuantumRange值来进行恢复。)
operator介绍
Abs 将value添加到像素中,返回绝对值。
Add 将value添加到像素中。
AddModulus 将value添加到像素模块的QuantumRange中。
And 使用二进制的像素值与value进行与(and)运算。
Cos, Cosine 使用增加了50%偏移的频率值对像素进行cos运算。
Divide 用像素值除以value。
Exp, Exponential 以e为底的幂函数。
LeftShift 按照value对像素值进行左移(例如,用像素值乘以2value)。
Log 对归一化像素进行对数运算
Max 从最小值处剪切像素。
Mean 将value加起来,然后除以2。
Median 从图形序列中选择中值。
Min 从最大值处剪切像素。
Multiply 用value乘以像素值。
Or 使用二进制的像素值与value进行或(or)运算。
Pow 对归一化像素按照value进行乘方运算。
RightShift 按照value对像素值进行右移(例如,用像素值除以2value)。
Set 将像素值设定为value。
Sin, Sine 使用增加了50%偏移的频率值对像素进行sin运算。
Subtract 按value对像素进行剪切。
Xor 使用二进制的像素值与value进行异或(xor)运算。
Gaussian-noise  
Impulse-noise  
Laplacian-noise  
Multiplicative-noise 等同于使用相应的-noise选项
PoissonNoise  
Uniform-noise  
Threshold 设定value为门限值。
ThresholdBlack 将阈值范围设定为0到value。
ThresholdWhite 将阈值范围设定为value到最大值。
上面指定的功能只对先前在图像-channel选项中设置的通道起作用。如果有必要,计算结果将被截断(剪切)以匹配范围 [0,QuantumRange]。图像的阿尔法通道使用“alpha”值来代表(0表示完全透明),因此例如,将阿尔法通道值除以2就会得到半透明图 像。附加百分比符号“%”表示QuantumRange百分比的值。
要打印完整-evaluate选项的列表,使用“-listevaluate”命令。
使用-level和+level选项和适当的参数设置也可以实现Add、Subtract和Multiply的方法,对整个范围内的颜色值进行线性修改。 请注意,-level选项将透明度视为“matte”值(0 =不透明),同时-evaluate则视为“alpha”值。
AddModulus方法是在ImageMagick6.4.8-4版本中添加的,并提供QuantumRange的模块。因此,它相当于Add方法除非像素值在[0,QuantumRange]范围以外。
Exp或Exponential方法是在ImageMagick6.6.5-1版本中加入的,并且工作于归一化的像素值。它使用的value值应该是负数,以产生指数衰减函数。如果是非负值,就会在[0,QuantumRange]范围以外产生扩大的结果。表达式如下。
exp(value × u)
如果将输入图像进行平方操作,例如使用-function polynomial "2 0 0",就会生成衰减高斯函数。
Log方法是在ImageMagick6.4.2-1版本中加入的,也工作于归一化的像素值。log使用的value提供了一个比例因子,来调整log函数的曲率。对u进行归一化的公式如下。
log(value × u + 1) / log(value + 1)
Pow方法是在ImageMagick6.4.1-9版本中加入的,工作于归一化的像素值。请注意,Pow方法与-gamma选项相关。例 如,“-gamma 2”相当于“-evaluate pow 0.5”,即平方根功能。-gamma中的值就是Pow所使用值的倒数。
Cosine和Sine方法是在IM v6.4.8-8版本中加入的,将图像值根据正(余)弦函数进行转换。也可以使用简写Cos和Sin。输出被进行了50%的偏置和50%标准化处理,以适 应各自的颜色值范围。value决定了函数的周期(频率),从而决定了输入颜色范围中将会生成的“波”数。例如,value是1,有效周期就是 QuantumRange,但如果value为2,有效周期是QuantumRange的一半。
0.5 + 0.5 × cos(2 π u × value).
也可以参考-function选项,它是-evaluate选项支持多个值的版本。
 
-evaluate-sequence   operator
通过评估图像序列的算法、关系式或逻辑表达式,来改变通道的像素。
 
-extent   geometry
设置图像的尺寸和偏移。
如果图像被放大,填补区域将设置为背景颜色。使用-geometry选项中的偏移和-gravity设置对图像进行定位。如果要指定合并图像与背景图像,请使用-compose选项。
此命令将缩小或放大一张JPEG图像,以适应800x600的显示屏。如果输入图像的宽高比不是精确的4:3,那么图像将在800x600的黑色画布中居中显示:
convert input.jpg -resize 800x600 -background black -compose Copy \
-gravity center -extent 800x600 -quality 92 output.jpg

图像-geometry参数的完整细节请参考 Image Geometry
 
-extract   geometry
从图像中提取指定的区域。
此选项是最有效的方法从一张非常大的原始图像中提取子区域。请注意,下面两个命令是等价的:
convert -size 16000x16000 -depth 8 -extract 640x480+1280+960 \
image.rgb image.png
convert -size 16000x16000 -depth 8 'image.rgb[640x480+1280+960]' \
image.rgb image.png
如果省略偏移:
convert -size 16000x16000 -depth 8 -extract 640x480 \
image.rgb image.png
如果将图像调整到指定的尺寸:
convert -size 16000x16000 -depth 8 -resize 640x480 image.rgb image.png
 
-family  fontFamily
设置文本的字体家族。
此选项设置了一个字体家族,ImageMagick会尽量使用这种字体进行文本渲染操作。如果发现了可以使用的这个家族字体就使用它;但是如果没有发现, 就用默认字体(如“Arial”)或类似的家族字体取代(例如,可以使用“Courier”字体来取代设置的“System”字体家族,如果没有发现它的 话)。
对于其它影响字体的设置选项,请参考选项-font、-stretch、-style和-weight。
 
-features  distance
在四个方向上(horizontal、vertical、left和right对角线)根据指定距离显示图像中每个通道的特性。
 
-fft
实现正向的离散傅立叶变换(DFT)。
此选项是在ImageMagick6.5.4-3版本中新加入的(同时Windows用户现在使用的ImageMagick6.6.0-9版本也支持这个 选项)。它将图像从正常的时域(空间)映射到了频域。在频域中,图像代表了不同幅度正弦波极其复杂的叠加。图像的x和y坐标就是分别沿x和y方向可能的频 率值,像素的强度值是复数并且对应正弦波的振幅。可以参考傅立叶变换( Fourier Transform )、离散傅立叶变换( Discrete Fourier Transform )和快速傅里叶变换( Fast Fourier Transform )。
我们只提供单独的一个图像名称作为此选项的输出。然而,输出结果实际上将有两个组成部分。它可以是一张包含两帧的图像或者两张单独的图像,这将根据指定的 图像格式是否支持多帧图像来决定。我们最终得到两个输出结果的原因是由于图像的频域使用了复数来表示,而它不能直接用于显示。因此,其中的复数就被自动分 成两个部分,用两张图像来代表。我们得到的第一部分是复数的幅度,第二部分是复数的相位。更详细信息请参看 Complex Numbers
另外,生成的两张幅度和相位分量的图像,必须指定为不限制颜色并且不进行压缩的图像格式。因此,推荐使用的图像格式主要包括MIFF、TIF、PFM、EXR和PNG等。所有这些图像格式,除了PNG格式之外,其它的都支持多帧图像。因此例如
convert image.png -fft fft_image.miff
将会产生一张振幅图像名为“fft_image.miff[0]”和一张相位图像名为“fft_image.miff[1]”。同样的
convert image.png -fft fft_image.png
将会产生一张振幅图像名为“fft_image-0.png”和一张相位图像名为“fft_image-1.png”。如果你喜欢这种表示方法,那么你也可以强制其它任何格式产生两个输出图像,通过在命令行中的-fft选项之后添加+adjoin选项。
输入图像可以是任意尺寸的,但如果不是正方形或者尺寸不为偶数,它就会自动将输入图像的宽度或高度变大,把尺寸像素填充为偶数,而且将从输入图像的底部和 (或)右侧进行填充。操作结束后输出的幅度和相位图像仍然是这个尺寸的正方形。这种方式的填充操作依赖于虚拟像素(-virtual-pixel)设置。
两个输出组件的动态范围都将匹配[0,QuantumRange],因此不需要启用HDRI设置。相位值在名义上的范围是从0到2*π,但是对于非 HDRI汇编的ImageMagick,图像的相位将进行缩放,以覆盖整个动态范围。幅度图像没有进行调整,因此一般会包含有非常小的值。所以图像通常会 完全呈现为黑色。为了看到其中的细节,幅度图像通常被使用log函数进行增强,变为我们所说的频谱。log函数通常用来增强图像颜色,并且较深的值比较浅 的值增强得多。这写都是可以实现的,例如下面:
convert fft_image.miff[0] -contrast-stretch 0 \
-evaluate log 1000 fft_image_spectrum.png
首先,“-contrast-stretch 0”命令用来将图像缩放到整个动态范围。而“-evaluate log”命令中指定的参数通常在100到10000之间,这要取决于你希望在频谱中显示信息的量是多大了。较大的值会产生更加明显的细节。但是,过多的细 节也可能隐藏图像的重要特征。
FFTW 库被要求使用-fft。
使用+fft选项可以产生两个输出图像,分别是傅立叶变换得到的复数的实部和虚部。
但是,由于复数的实部和虚部中可能包含负值,这就需要IM在配置中启用HDRI了。在这种情况下,你就必须使用MIFF、TIF或PFM来显示实部和虚部的结果,因为这些格式可以保留负数和分数值而无需进行裁剪或截断小数部分。
+fft选项生成的实部和虚部的图像也是正方形的,甚至需要和上面讨论的幅度和相位分量图像一样进行相同的尺寸填充,。
参考关于ImageMagick中HDRI实现的讨论页面 High Dynamic-Range Images 。有关HDRI的详细信息请参考ImageMagick的 Usage 页或维基百科条目 Wikipedia
 
-fill  color
设置填充图形时使用的颜色。
此选项可以设定一个颜色名字、十六进制颜色或RGB、RGBA、HSL、HSLA、CMYK或CMYKA规范的数字。如何正确地指定颜色参数请参阅 Color Names
将颜色规范括在引号中,以防止“#”或者括号被你的shell错误的解释。
例如,
-fill blue
-fill "#ddddff"
-fill "rgb(255,255,255)"
参考 -draw 选项获得更多详细信息。
如果要打印完整的颜色名列表,使用“-list color”命令。
 
-filter  type
使用指定类型(type)的滤波器进行图像调整或扭曲。
使用此选项来影响图像的调整操作,例如-resize和-distort操作。你可以使用简单的缩放滤波器,如:
     Point             Hermite             Cubic
     Box                 Gaussian           Catrom
     Triangle       Quadratic         Mitchell
同时还提供了Bessel和Sinc滤波器(以及更快速的SincFast形式)。但是,这些滤波器通常是无用的,因为它们是无限冲击响应裁剪到滤波器支持的大小。不建议直接使用它们,除非进行专业的设置(见下文)。
通常这些特殊的滤波器会被-filter选项定义的窗口函数进行加窗操作。也就是说,使用这些滤波器应该定义一个适合该选项的窗口函数。窗口滤波器包括:
     Lanczos             Hamming             Parzen
     Blackman           Kaiser               Welsh
     Hanning             Bartlett           Bohman
还提供了另一个特殊的自加窗滤波器“Lagrange”,它将根据当前的“support”和“lobes”高级设置自动重新调整其函数。
如果你不设置此选项,将对色图、透明通道的图像或放大的图像默认使用“Mitchell”滤波器,否则默认使用“Lanczos”滤波器。
要打印缩放滤波器的完整列表,请使用“-list filter”选项。
你可以通过使用专业设置来在进行图像缩放时修改滤波器的过滤参数(见-define和-set):
-define filter:blur=factor
缩放滤波器的x轴(和其窗口)。使用>1.0的值进行模糊或<1.0的值进行锐化。它只能用于高斯(Gaussian)或类高斯滤波器,否则你可能无法得到预期的结果。
-define filter:support=radius
设置滤波器的支持半径。定义滤波器的半径大小,将直接影响滤波器重采样过程的速度快慢。所有滤波器都有一个默认最佳半径。部分滤波器如 “Lagrange”和加窗滤波器将根据这个值调整自己。使用简单的滤波器,这个值要么什么也不做(但重采样速度变慢),要么使用有损方式修剪滤波函数。
-define filter:lobes=count
设置Sinc/Bessel滤波器的旁瓣数量。这指定滤波器的“support”范围的可选方法,并且设计上更适合加窗滤波器,尤其进行图像扭曲操作时。
-define filter:b=b-spline_factor
-define filter:c=keys_alpha_factor
重新定义立方滤波器的值,如Cubic、Catrom、Mitchel、Hermite以及Parzen、Sinc等开窗函数。如果只定义了一个值,其它 的将被设置,以生成一个“Keys”类型的立方滤波器。其中值的含义是根据Mitchell-Netravali的一份研究报告定义的。
-define filter:filter=filter_function
直接使用此函数作为缩放滤波器。这将允许你直接使用开窗滤波器“Blackman”,而不是正常用法中使用的“Sinc”或“Bessel”开窗函数。如果定义了,就不会使用开窗函数,除非以下的专业设置也被定义了。
-define filter:window=filter_function
IIR(无限脉冲响应)滤波器Bessel和Sinc将使用给定的滤波器进行加窗操作(从0到定义的support范围)。这让你可以指定一个通常不用作开窗函数的滤波器,比如使用Box(可以有效地关闭开窗函数)对Sinc进行加窗操作,或以前定义的函数。
-define filter:verbose=1
这将导致IM在标准输出中打印选择的内部滤波器信息。这包括正在使用的滤波器设置中的评论头和数据。
但是请注意,有些滤波器在内部是根据其它滤波器进行定义的。例如Lanczos滤波器就是根据加窗SincFast滤波器定义的,而Mitchell滤波器则定义为特定的“B”和“C”设置的Cubic滤波器。
例如,8个旁瓣的Bessel滤波器:
convert image.png -filter bessel \
-set filter:window=bessel -set filter:lobes=8 \
-resize 150% image.jpg
或者4个旁瓣的未加窗Sinc滤波器:
convert image.png -set filter:filter=sinc -set filter:lobes=4 \
-resize 150% image.jpg
请注意,专业选项(除了“blur”和“verbose”),主要提供给研究和理解缩放滤波器工作原理的专家使用。如果没有这方面的知识,或不了解所涉及的滤波器定义,使用专业设置很可能会对你的图片缩放造成损害。
 
-flatten
这是-layers选项中“flatten”方法的一个简单别名。
 
-flip
创建一张镜像图像。
在垂直方向上反映扫描线。图像将被上下颠倒。
 
-floodfill { +- } x { +- } ycolor
在指定的偏移量处用颜色对图像进行替换填充(floodfill)。
替换填充将从给定的“种子点”开始,它不受gravity的影响。当任何颜色与指定颜色参数的差异在-fuzz色彩距离之内,并且和“种子点”相连接,那么它将会被填充颜色(-fill)替换掉。
请注意,如果“种子点”像素本身的颜色就和指定的颜色不匹配(根据-fuzz),那么将不会采取任何操作。
这个选项的工作方式更像是-opaque选项,而不像普通的floodfill填充一样,直接读取“种子点”的颜色作为匹配色。更详细的信息请看-draw选项的“floodfill”方法。
 
-flop
创建一张镜像图像。
在水平方向上反映扫描线。图像将被左右交换。
 
-font  name
用文字注释图像或创建标签时,设置要使用的字体。
要打印字体的完整列表,请使用“-list font”命令(6.3.6版本前,使用“type”而不是“font”)。
除了上述预定义列表中指定的字体,你也可以从指定的源中指定一个特定的字体。例如Arial.ttf是一个TrueType字体文件,ps:helvetica是一种PostScript字体,而x:fixed是X11字体。
对于影响字体的其它设置,可以参考-family、-stretch、-style和-weight选项。
 
-foreground  color
定义前景色。
采用-fill选项下描述的颜色格式。
默认的前景色是黑色。
 
-format  type
图像格式类型。
当与mogrify一起使用时,此选项将会把任何图像转换为你指定的图像格式。 ImageMagick中支持的图像格式类型列表,请使用“-list format”命令查询。
默认情况下,该文件仍然保持其原来的名字。但是,如果文件的扩展名匹配支持的格式,那么扩展名将被-format指定的图像格式类型取代。例如,如果指定为TIFF格式类型并且输入图像的文件名是image.gif,则输出图像的文件名变为image.tiff。
 
-format  string
输出格式化的图像属性。[ identify ]
 
-frame  geometry
给图像添加环绕边框或斜面边框。
边框的颜色使用命令行选项-mattecolor来指定。
参考-geometry选项获得完整细节。geometry参数的size部分表示添加到图像中的额外的宽度和高度。如果geometry参数中没有设置 偏移量,那么添加的边框就是纯色的。如果设置了x和y偏移,就会在边框的宽度和高度部分,形成具有厚度的x像素的外斜面和y像素的内斜面。而负的偏移量则 没有意义。
-frame选项其实受到当前的-compose设置的影响,并且假设这是使用默认的“Over”合并方法。它采用-bordercolor设置生成一张 尺寸合适的图像,然后绘制了四种不同的接近当前-mattecolor设置的颜色。原始图像将会覆盖到这张边框图像的中央。这意味着,使用默认的 “Over”合并方法可以将任何透明部分替换为当前的-bordercolor设置。
图像合并操作不受-gravity选项影响。
 
-frame
在导入的图像中包括X window的边框。[ import ]
 
-function  functionparameters
对通道值应用函数。
此运算选项根据给定的参数进行计算,会修改图像中每个先前设置的通道中的每个颜色值。关于如何处理计算结果的详细信息,请参阅-evaluate。
这可以被认为是-evaluate选项的多参数版本。(在ImageMagick v6.4.8-8版本中加入的)。
parameters参数是一个逗号分隔的数值列表。值的数量取决于function选择的功能。功能包括:
Polynomial(多项式)
     Sinusoid(正弦)
     Arcsin(反正弦)
     Arctan(反正切)
要打印function的完整列表,使用“-list function”命令。说明如下。
Polynomial(多项式)
多项式函数接受任意数量的参数,这些多项式的系数将采用降序排列。也就是说
-function Polynomial  an , an -1 ,... a 1 , a 0
将调用一个多项式函数
anun  +  an -1 u n -1  + ···  a 1 u  +  a 0 ,
其中u是像素的原始归一化通道值。
这个Polynomial函数可以用来代替-evaluate选项的Set(常数多项式)、Add、Divide、Multiply和Subtract(一些线性多项式)方法。-level选项同样对通道产生线性影响。遵循的规则如下。
-evaluate Set value -function Polynomial value (常数函数;设置value×100% gray当通道为RGB时)
-evaluate Add value -function Polynomial 1,value  
-evaluate Subtractvalue -function Polynomial 1,−value  
-evaluate Multiplyvalue -function Polynomialvalue,0  
+level black% x white% -function Polynomial A,B (降低对比度。A=(white-black)/100 and B=black/100)
多项式函数提供了很好的通用性,因为多项式可以设置为任何所需的精确度,以适应任何连续的曲线。
Sinusoid(正弦)
正弦函数可以用来对不同的通道值进行正弦变换,通过设置频率(frequency)、相位(phase)、振幅(amplitude)和偏置(bias)。这些值由下面4个参数决定:
-function  Sinusoid freq ,[ phase ,[ amp ,[ bias ]]]
其中相位的单位为度数(该函数[0,1]的范围对应0到对应 freq ×360度)。其结果就是,如果一个像素的归一化通道值为u,它产生的归一化值由下式决定:
amp  * sin(2*π* ( freq  *  u  +  phase  / 360)) +  bias
例如,下面生成一个曲线开始和结束都是0.9(当u分别为0和1),振荡三次,振动范围为0.7-0.2=0.5和0.7+0.2=0.9之间。
-function Sinusoid 3,-90,.2,.7
振幅和偏置的默认值均为0.5。相位的默认值是0。
正弦函数产生的正弦和余弦可以通过使用-evaluate选项设置不同的振幅、相位和偏置来实现。对应如下。
-evaluate Sin freq -function Sinusoid freq,0
-evaluate Cos freq -function Sinusoid freq,90
ArcSin(反正弦)
ArcSin功能将产生正弦波的逆曲线,可以用来生成扭曲的圆柱和位移的地图。曲线可以通过设置输入值和输出值范围进行调整。
-function  ArcSin width ,[ center ,[ range ,[ bias ]]]
所有设定值都应该是归一化的颜色值(0.0为黑色,1.0为白色)。
range /π * asin( 2/ width  * (  u  -  center  ) ) +  bias
ArcTan(反正切)
反正切函数会生成一条曲线,从有限值延伸到无穷大,虽然中心使用了给定的斜率。所有这些值都可以通过参数进行调整。
-function  ArcTan slope ,[ center ,[ range ,[ bias ]]]
默认为“1.0,0.5,1.0,0.5”。
range /π * atan(  slope *π * (  u  -  center  ) ) +  bias
 
-fuzz  distance { % }
在这个距离范围内的颜色都被认为是相等的。
许多搜索目标颜色的算法。默认情况下,颜色必须是精确的。使用此选项可以匹配在RGB颜色空间中接近目标色的颜色。例如,如果你使用-trim选项自动修剪图像边缘,但是扫描图像的目标背景颜色之间可能会有细微的差异。此选项就可以消除这些差异。
distance参数可以是绝对的强度单位,或通过追加“%”作为最大强度(255、65535或4294967295)的百分比。
 
-fx expression
对图像或图像通道应用数学表达式。
如果expression的第一个字符是“@”,那么表示从紧接着的字符串为文件名的文件中读取表达式。
参看-fx选项的使用介绍获得更详细的信息。 下面是ImageMagick图形图像处理软件命令行工具的命令行参数的详细说明。如果你需要某个特定参数的说明,在上面的导航栏中单击对应名称,就可以直接跳转到相应位置。除非另有说明,每个命令参数都可以用于convert和mogrify命令。
 
-adaptive-blur  radius [x sigma + bias ]
自适应像素模糊操作,在边缘处效果减弱。
采用给定的半径(radius)和标准差(sigma)进行高斯模糊处理。如果缺少标准差则默认为1。
 
-adaptive-resize  geometry
使用数据依赖的三角滤波进行图像的尺寸调整。
有关的几何参数的详细信息请参阅 Image Geometry 。-adaptive-resize命令默认使用数据依赖的三角滤波进行图像的尺寸调整。你也可以用-filter命令来选择其它的重采样算法。这个命令不支持geometry中偏移量(offsets)的设置,并且-gravity参数也是无效的
 
-adaptive-sharpen  radius [x sigma + bias ]
自适应像素锐化操作,在边缘处增强效果。
采用给定的半径(radius)和标准差(sigma)进行高斯锐化处理。如果缺少标准差则默认为1。
 
-adjoin
将图像文件加入到一个多图像的文件中。
此选项是默认启用的,总是尝试将图片组中的所有图像保存到一个输出文件中。但是部分文件格式如JPEG和PNG,单个文件并不支持多帧图像,在这种情况 下,ImageMagick将为每帧图像单独生成一个图像文件。因此,如果需要生成多个图像文件,将在用户给定的文件名后添加一个场景编号,以区分不同图 像文件。
使用+adjoin表示强迫图像组中的每帧图像写入到单独的文件中,不管文件格式是否允许储存多帧图像(例如GIF,MIFF,和TIFF)。
你也可以采用C语言风格的输出格式编写,在文件名中加入'%d'或'%03d'的写法,就会自动产生+adjoin的效果,并在文件名的相应位置处生成编号。例如:
convert logo: rose: -morph 15 mydmorph.jpg
将生成17张图像文件(logo和rose两张,以及-morph命令生成的15张),文件名分别为:my00morph.jpg,my01morph.jpg,my02morph.jpg,... ...,my16morph.jpg。
总之,ImageMagick默认将会尝试将所有图像写入一个文件中,如果存在下列任一情形,则会保存到多个文件中:
1、输出图像格式不允许储存多帧图像;
2、命令中包含了+adjoin参数;
3、文件名中出现了特定的参数,如"%d"。
 
-affine  sx , rx , ry , sy [, tx , ty ]
给联合旋转和缩放设置图形变换矩阵。
这个选项将设置一个图形转换矩阵,在随后的-draw或-transform参数中使用。
矩阵中数值之间采用逗号进行分割。
在变换矩阵内部应该有3x3的元素,但其中三个在输入时应该省略,因为他们是不变的常数。从原像素坐标(X,Y)变换到新坐标(X’,Y’)将使用以下的矩阵方程:

由此产生的图像的大小将是包含转换源图像的最小矩形。参数tx和ty将使图像产生移动,那些移动出图像区域的部分则被删除。
变换矩阵遵从左手像素坐标系:正向X和Y方向分别向右和向下;正向旋转方向是顺时针。
如果转换系数tx和ty省略,系统将默认为0,0。因此,四个参数就可以完成图像的旋转和缩放,但是不会产生平移效果。
参数Sx和Sy分别将在X和Y方向上产生缩放效果。
也可以参考-transform和-distort获得更多的信息。
-affine  sx ,0,0, sy
平移(tx, ty)可以写成下面的形式:
-affine 1,0,0,1, tx , ty
顺时针旋转可以表示为下列形式,其中c = cos(a), s = sin(a):
-affine c , s ,- s , c
多次仿射变换的积累效应也可以通过一次变换来完成。
系统默认会检测邻近奇异变换矩阵。如果矩阵行列式的绝对值过小,它将会被拒绝。
 
-alpha  type
控制图像的阿尔法通道(透明通道)。
用于控制是否使用现有的阿尔法通道数据,创建一个新的阿尔法通道,或对其执行其他操作。可以从以下列表中选择参数类型。
类型 描述
Activate(或On) 启用图像的透明通道。注意:一般情况下应该使用Set参数对通道进行操作,而不仅仅启用,除非你特别需要保留现有的透明通道(但不关闭)。
Deactivate(或Off) 禁用图像的透明通道。不会删除或更改现有的数据,只是不能使用这些数据。
Set 激活阿尔法通道。如果它以前关闭,那么它也将重置为不透明的通道。如果图像的阿尔法通道已经打开,将不会产生任何效果。
Opaque 启用阿尔法通道,并设定它是完全不透明。
Transparent 激活阿尔法通道,并设定它是完全透明的。它将有效地创建一个与原图大小相同的完全透明的图像,而所有其原有的RGB通道数据保持不变,但完全透明。
Extract 将阿尔法通道的值复制到其它所有的颜色通道并关闭图像的透明度,这样才能产生一个图像形状的灰度蒙版。阿尔法通道的数据不会改变只是保持未激活状态。这是“Copy”操作的逆操作。
Copy 打开阿尔法通道,然后复制图像的灰度值到阿尔法通道,将灰度蒙版转换成一个具有形状的透明蒙版,颜色通道值不会被修改。
Shape 和“Copy”操作的效果一样,并且还会使用背景色对生成的形状蒙版进行染色。也就是用相应的透明形状取代RGB颜色通道。
Background 将任何完全透明的像素设置为背景颜色,而保持它的完全透明。这可以使一些图像格式文件,例如PNG,透明像素点较少时的RGB值更均匀,从而可以实现更好的压缩。
注:+matte命令和"-alpha Off"实现的效果一样,但是-matte和"-alpha Set"的效果一样,而不等于"-alpha On"。
 
-annotate degreestext
-annotate  Xdegrees x Ydegreestext
-annotate  Xdegrees x Ydegrees  {+-} tx {+-} tytext
在图像上添加注释文字。
这是一个较为便捷的在图像上添加注释文字的方式。如果需要更加精确地控制文本注释,则需要使用-draw命令。
其中Xdegrees和Ydegrees值分别控制文字的旋转,而tx和ty设置文字距离图像左上角的偏移量,也就是起始位置。
使用-annotate degrees或-annotate degreesxdegrees命令将产生未修剪的文本旋转效果。旋转方向是正向,这意味如果degrees值为正就进行顺时针旋转。(这符合通常的数学公约,Y轴正方向指向图像的下方)。
新(转化后)图像的像素坐标(X’,Y’)与原始像素坐标(X,Y)的对应关系遵从以下的矩阵方程。

如果tx和ty参数缺省,则默认为0。这将使得文字的左下角位于图像的左上角处,这可能不是用户希望的效果。在这种情况下添加-gravity选项,会得到更好效果。
文字可以是任何UTF-8编码的字符序列。如果命令中的text参数显示为'@mytext.txt'的形式,程序将会读取mytext.txt文件。文件中的文本只保留字符内容,并支持字符格式识别。
 
-antialias
启用/禁用绘制字体和线条时的抗锯齿像素渲染。
绘制对象(如文本、线、多边形等)在默认情况下是抗锯齿的。使用+antialias选项禁用边缘像素抗锯齿渲染。然后这将减少直接绘制时图像上的生成颜色的数量。也就是说,绘制对象时将没有混合颜色添加进去。
 
-append
垂直或水平地加入当前图像。
此选项将创建一个多张图像连接而成的图像文件,将图像组中所有的图像从上至下的连接。使用+append选项则是从左至右的效果。
如果它们是不相同的宽度,窄的图像空白部分将用设置的背景颜色进行填充,它们彼此的相对位置可以由-gravity参数进行设置。
 
-attenuate  value
减弱或加强图像中增加的噪声
 
-authenticate  password
使用密码对PDF文件进行解压。
使用此选项对采用MSC API加密的PDF文档进行解密。但是不支持使用MSC API进行加密。
需要采用不同的加密方式,可以参考-encipher和-decipher。
 
-auto-gamma
自动调整图像的伽玛水平。
程序将计算图像的平均值,然后计算出最合适的伽玛值,使图像中存在的平均颜色约占所有颜色的50%。
这意味着,任何全“灰色”的图像变为50%的灰色。
这非常适用于真实生活中的照片图像和画面中极端暗区或亮区较少的图像,而对存在大量明亮的天空或阴影的图像效果就很不好。同样它也不适合处理图表或卡通图案。
还可以使用-channel来设置需要处理的颜色和通道(命令中可以包括sync标志来实现通道的同步)。系统的默认设置是'RGB,sync',通道将修改为相同的伽玛值并保持颜色。
 
-auto-level
自动地调整图像的色彩层次(图像曲线)。
这是一个“完美”的标准分布运算器。它可以精确地找到最小和最大颜色值,然后使用-level对图像直方图进行拉伸,以覆盖整个范围。
这个操作并不适用于真实生活中的照片图像、扫描的图像或JPEG格式的图片,因为每个单一的突出像素都可能被设定为最小/最大值,使它缺乏代表性。另一方面,它可以用来很好的生成梯度均匀的颜色查找表或其它通过数学运算生成的图像。
这个命令与-normalize、-contrast-stretch和-linear-stretch非常相似,但没有其它这些命令存在的“直方图分级”或“裁剪”的问题。可以认为-auto-level是其中最完美和理想的版本。
它也可以使用-channel来设置需要处理的颜色和通道(命令中可以包括sync标志来实现通道的同步)。系统的默认的+channel设置是'RGB,sync',通道将修改为相同的伽玛值并保持颜色,并且忽略透明度。
 
-auto-orient
自动调整(旋转)数码相机照片的方向。
该操作读取和复位EXIF配置文件中的方向参数,然后适时执行90度旋转,以使图像始终保持正确的查看方向。
这EXIF配置文件通常由数码相机中的重力感应器进行设置,但是垂直向上或向下的拍摄的图像可能并不会得到一个正确的方向值。使用自动调整方向可能也不能得到正确的校正。如果图像中的EXIF配置文件被去除以后,-auto-orient命令将不会产生任何效果。
 
-average
对一组图像进行平均操作。
如果图像的尺寸不同将会产生错误。
 
-backdrop
在背景的中央显示图像。[ animate display ]
背景将覆盖了整个工作站的屏幕并隐藏其它活动的X窗口,这对观看图像非常有用。背景颜色通过-background命令进行设置,具体颜色种类可以参考-fill命令下的介绍。
 
-background  color
设置背景颜色。
具体颜色种类可以参考-fill命令下的介绍。默认背景色是白色。
 
-bench  iterations
测量执行效果。
设置所有命令的重复次数,并输出运行时间。例如,根据下面的命令和它的输出,可以修改-duration以在特定时间基准点执行,或者使用-concurrent完成程序的并行处理(需要具有OpenMP功能)。
convert logo: -resize 1000% -bench 5 logo.png
Performance[4]: 5i 0.875657ips 6.880u 0:05.710
在这个例子中,程序以每秒0.875657次迭代的速度完成了5次迭代,使用分配给用户的6.88秒时间,总运行时间为5.71秒。
 
-bias  value { % }
进行图像卷积操作时,设定偏置。
这个参数将对卷积的输出进行移动,使正负结果与偏置量相关。
这个命令对ImageMagick进行非HDRI编译时处理同时包含正负值的卷积操作非常重要,特别是涉及高通滤波器的卷积或边缘检测的情况下。如果没有输出偏置,负值就会全部归零。
当ImageMagick使用HDRI编译设置时,就不需要设定偏置量,因为ImageMagick是能够存储/处理任何负值,而不会将之转换为颜色值范围内的数值(0-QuantumRange)。
有关HDRI的更多信息请参考ImageMagick的用法页或Wikipedia条目。
 
-black-point-compensation
进行黑点补偿。
 
-black-threshold  value { % }
所有低于阈值的像素全部变为黑色,高于阈值的像素则保持不变。
阈值可以是百分比或一个绝对整数值(0-QuantumRange), [0]对应至所需频道的价值。更多信息请参阅-threshold命令。
 
-blend  geometry
以给定的绝对值或百分比将一张图像融合到另一张中。[ composite ]
该命令将根据给定的百分比和每个像素的透明度对多张图像进行平均操作。如果只有一个百分比值则赋给“资源”图像,而背景图像使用其余全部值。如-blend 30%指合并30%的“资源”图像与70%的“目的”图像。因此,等同于-blend 30x70%。
 
-blue-primary  x , y
主要蓝色点染色
 
-blue-shift  factor
模拟夜晚月光照射的场景,数值从1.5开始。
 
-blur  radius
-blur  radius x sigma + bias
图像模糊操作。
采用高斯或正态分布对图像进行卷积,需要给定标准差(Sigma),方程如下:

Sigma值是一个重要参数,它将确定实际发生模糊的范围。
Radius仅用于确定计算时高斯分布数组的大小。它应该是一个整数。如果没有给出,或设置为零,IM将会计算可能的最大半径的高斯分布。
Radius值越大操作速度越慢。但是如果取值太小,则可能导致锯齿失真效果。作为一个指导原则,Radius至少应该两倍于Sigma值,虽然三倍将可以产生一个更精确的结果。
此选项不同于-gaussian-blur命令那样简单地利用分布的可分性属性。在这里,我们应用水平方向上的一维高斯矩阵,然后在垂直方向上重复该过程。
-virtual-pixel设置将决定图像外的像素如何进行模糊。
 
-blur  Width [x Height [+ Angle ]]
根据图像覆盖映射产生的可变模糊。[ composite ]
重叠区域中的每个像素都会用源图像的椭圆加权平均(EWA)值进行替换,并根据灰度映射进行缩放。
椭圆采用给定的Width和Height。Height默认等于Width进行普通的圆形高斯加权。Angle参数将从水平方向顺时针旋转椭圆形。
 
-border  geometry
设置有颜色的图像边框。
可以设置图像上下和两侧的边框宽度。有关的几何参数的详细信息,请参阅 Image Geometry 。此命令忽略偏移量。
通过在前面加入-bordercolor命令来设置边框的颜色。
-border命令将会受到-compose命令的影响,默认设定为“Over”的覆盖方式。
可以参考-frame选项,它具有更多的功能。
 
-bordercolor  color
设置边框的颜色。
颜色值采用-fill命令中指定的色彩格式。
默认的边框颜色是#DFDFDF(灰色)。
 
-borderwidth  geometry
设置边框宽度。[ animate display ]
 
-brightness-contrast  brightness
-brightness-contrast  brightness {x contrast }{ % }}
调整图像的亮度/对比度。
可以对输入图像的亮度和对比度值进行调整。它们都可以不用设置为绝对的数值。如果亮度或对比度的值为零意味着没有变化。每个值的范围都是-100 至+100。正值会增加亮度或对比度,而负值则会减少亮度或对比度。如果只调整对比度,需将亮度设置为0。如果只控制亮度,则设置对比度为0或不填写第二 个参数。
你也可以使用-channel命令来控制需要进行哪些通道的亮度/对比度调整。默认情况是对所有通道都进行相同的变化。
亮度和对比度值分别转换为图像曲线线性变换的偏移和斜率,也可以使用函数多项式中的偏移和斜率来实现(-function polynomial "slope,offset")。
对比度为-100时曲线斜率为0度,当对比度变化100时斜度变为垂直的。如果亮度=0、对比度=-100,结果是纯灰色。而如果亮度=0、对比度=100,结果也很相似,但达不到纯灰色的程度,因为线性变换中曲线在中央呈非常陡峭的垂直状态。
而这个功能无法实现负斜率,即反色的图像。所有可以实现的斜率都为零或正值。
亮度=-100对应-0.5的偏移,亮度=0对应0的偏移,亮度=+100则对应+0.5的偏移。因此,当对比度=0、亮度=100时,结果将是纯白色。同样,当对比度=0、亮度=-100时,结果是纯黑色。
由于参数值的范围是-100到+100,所以是否加入%没有太大的意义。
 
-cache  threshold
这个命令在新版中已经更换为了-limit。
 
-caption  string
指定图像的标题。
如果设置此选项后,程序将读取图像元数据中的标题信息。要修改图像内存中已有使用标题需使用“-set caption”命令。
标题中还可以包含特殊格式的字符,在-format格式说明中有详细介绍。这些属性在最后分配给图像时会自动进行扩展。
如果string参数中的第一个字符是@,图片标题将会从以@之后字符串为文件名的文件中读取。并且从文件中读取的评论文字不会嵌入字符格式。
元数据中的标题信息不会在图像中显示出来。如果需要显示的话,必须使用-annotate或-draw命令。
例如:
-caption "%m:%f %wx%h" bird.miff
产生的图片标题是MIFF:bird.miff 512x480(假设bird.miff图像宽度为512,高度为480)。
 
-cdl  filename
使用颜色列表文件进行颜色校正。
下面是一个颜色校正集的例子:
<?xml version="1.0" encoding="UTF-8"?>
<ColorCorrectionCollectio n xmlns="urn:ASC:CDL:v1.2">
<ColorCorrection id="cc06668">
<SOPNode>
<Slope> 0.9 1.2 0.5 </Slope>
<Offset> 0.4 -0.5 0.6 </Offset>
<Power> 1.0 0.8 1.5 </Power>
</SOPNode>
<SATNode>
<Saturation> 0.85 </Saturation>
</SATNode>
</ColorCorrection>
</ColorCorrectionCollectio n>
 
-channel  type
指定随后其它参数可以起作用的图像颜色通道。
可选参数包括:Red, Green, Blue, Alpha, Cyan, Magenta, Yellow, Black, Opacity, Index, RGB, RGBA, CMYK, CMYKA。
上面的通道可以指定为以逗号分隔的列表形式,也可以简写为大写字母'R', 'G', 'B', 'A', 'O', 'C', 'M', 'Y', 'K'直接串联的形式。例如,如果只选择红色和蓝色通道,你可以使用:
-channel Red,Blue
或者你也可以使用简写形式:
-channel RB
如果需要使用图像中存在的所有通道,可以指定通道类型为ALL。并非所有参数都可以指定通道进行处理,但一般可以产生灰度变换的参数都能进行通道设置。具体信息需要查看参数介绍。
 
在完成普通的通道选择之后,还可以指定一个额外的同步(sync)标志。它是默认打开的,对于支持这个标志的参数,设置同步意味着:必须对多个通道进行跨 通道的同步。如果没有设置同步,那么对于大多数进行灰度变换的参数而言,都将对每个通道(就是-channel中指定的通道)进行单独的图像处理操作。
例如,在进行-auto-level和-auto-gamma操作时,所有的颜色通道会用完全相同的方式进行修改,使各种颜色保持同步。如果没有设置同步,那么每个通道将单独进行修改,这可能会导致色彩失真。
另外,-morphology命令中的Convolve方法和-compose命令中的数学方法,在根据透明通道(如果存在)进行像素色彩修改时,同样支持同步标志。这样就可以让图像处理程序知道完全透明的颜色不应该出现在最终结果中。
基本在默认情况下,参数都设置为颜色通道同步,并将透明通道做特殊处理,除非-channel设置被修改,特意要消除同步标志的效果。每个参数具体如何同步的取决于它本身的设置,而且并非所有参数都支持这个标志,但我们会努力改变这种情况。
需要了解最详细的通道类型,可以使用-list channel命令。
 
默认情况下,ImageMagick的通道都设置为“RGBK,sync”,即除透明通道之外的所有颜色通道,并且所有颜色通道都结合它们的透明度(取决于具体操作),采用完全相同的方式进行修改。+channel的写法表示重置为默认值。
可以进行通道设置的选项包括:-auto-gamma, -auto-level, -black-threshold, -blur, -clamp, -clut, -combine, -composite (仅限数学合并方法), -convolve, -contrast-stretch, -evaluate, -function, -fx, -gaussian-blur, -hald-clut, -motion-blur, -morphology, -negate, -normalize, -ordered-dither, -radial-blur, -random-threshold, -separate, -threshold, -white-threshold。
警告,在使用+channel时,部分选项可能出现不同的效果,仍然推荐用户采用-channel进行通道设置(包括完成默认设置)。以上可能由于这些选项尚未更新同步标志的最新定义。
例如-threshold命令默认转换为灰度图像之后才进行阈值操作,如果没有进行通道设置,它就不会产生同步效果。
另外一些选项如-blur、-gaussian-blur,如果启用了阿尔法通道,那么它对其它颜色通道的处理方法将发生变化。一般来说,这样做是为了确 保完全透明的颜色始终保持它的完全透明,从而任何“隐藏”色对最终结果都不会产生影响,否则可以产生所谓的光环效应。但是,新版的-morphology 卷积等式实现了对同步标志的支持,从而可以默认对透明度完成正确的处理了。
由于图像内的阿尔法通道是可选的,一些命令会将图像的颜色通道作为阿尔法通道的灰度蒙版读入,如果当前图像没有阿尔法通道,-channel设置就会告诉命令使用阿尔法通道进行操作。-clut命令就是一个很好的例子。
 
-clamp
将图像色彩值限制在0-量子深度的范围内。
 
-charcoal  radius
-charcoal  radius x sigma + bias
生成炭笔画效果。
 
-chop  geometry
从图像内部删除像素。
有关几何参数的详细信息,请参阅geometry参数。几何参数中尺寸部分的宽度和高度决定了需要删除的列和行。而几何参数偏移量部分(如果存在)将受到-gravity设置的影响。
-chop选项将会删除整行整列,其余部分会向左和向上移动,来弥补空位。
虽然它可以删除内部的行列像素,但是通常还是和-gravity选项一起使用,并且偏移量设定为0,用来删除图像单侧的边缘。与此相似,-shave命令则是从图像两侧删除数目相等的像素。
使用-chop可以将具有相同几何参数和-gravity设置的-splice命令产生的效果消除。
 
-clip
应用编辑路径(如果该路径存在)。
如果编辑路径是存在的,它将应用于后续操作。
例如,在命令中
convert -clip -negate cockatoo.tif negated.tif
只有在编辑路径中的像素才进行反色。
-clip功能要求提供XML库。如果XML库不存在,该选项将被忽略。
 
-clip-mask
为图像引入可编辑蒙版
用给定的编辑蒙版指定当前图像序列中不可修改的区域。假设编辑蒙版是一张与内存中图像尺寸相同的灰度图像,那么任何白色的区域将不能被任何图像处理参数修改,直到蒙版被删除。在编辑蒙版黑色区域的像素将可以被正常修改。
在某些方面,这和使用-region命令定义矩形区域,或是-composite中三张图像的合并操作很类似(尽管不完全相同)。
 
-clip-path  id
导入8BImageMagick文件中的编辑路径。
和-clip命令的功能几乎一样。
 
-clone  index(s)
克隆图像。
这个命令通常放在括号内使用,它会克隆最后读入内存的一组图像序列(也就是括号中的图像序列),并将它们添加到当前图像序列的后面。如果在括号外使用(不推荐)该命令,则会克隆当前图像序列中所有的图像。
可以指定图像序列中的图像索引号,记住第一个图像的索引为0,而负的索引号将会从末尾反向开始,例如-1代表图像序列的最后一张。还能使用破折号指定一个 范围内的图像(如0-4)。用逗号(但不能用空格)可以分隔多个索引号(如0,2,5)。而“0--1”表示克隆序列中所有图像。
+clone选项表示克隆图像序列中的最后一个图像,因此也相当于使用参数“-1”。
 
-clut
使用第二张图像中的修正通道替代第一张图像中的通道值,来作为颜色查找表。
第二张(LUT)图像通常是一个渐变的图像,包含应该如何修改每个通道的直方图映射。通常它是使用替换颜色的一张单一行或列的图像。如果图像超过单独的一行或一列,那么它的值将取自从左上角到右下角的对角线。
颜色查找表还可以特别方便地使用-interpolate选项来进一步控制,而且并不需要达到ImageMagick安装质量水平的长度。插​​值设置中最好的方法是bilinear和bicubic,分别可以实现平滑的色彩渐变,和非平滑的直接整数值颜色查找表。
这个操作符特别适合用来以一个指定的颜色梯度从CLUT图像中替换出灰度图。
只有-channel选项设置的通道才会进行通道值的替换。特别由于默认的通道设置只有RGB,这意味着透明度(阿尔法通道)不会受到影响,除非修改通道 设置。当设置了阿尔法通道后,它将被-clut命令用和其它通道一样的方式进行处理,这意味着阿尔法通道值将被原始图像的阿尔法通道值所替代。
如果被修改的图像或查找表图像中都不包含透明度(即阿尔法通道是关闭状态),但-channel设置中却包括了阿尔法通道,那么程序就会假定图像代表灰度 渐变,以此来替换阿尔法值。这就是说你可以使用一张灰度颜色查找表来调整现有图像的阿尔法通道,或者你也可以使用包含了需要的颜色和透明度的颜色查找表来 给灰度图像着色。
另外,-hald-clut选项还可以根据颜色查找表将全彩RGB值从2D平面图像转换为3D彩色立方体。
 
-coalesce
义GIF动画序列每一帧图像的外观,生成像“电影剪辑”似的动画。
根据-dispose的元数据来覆盖图像序列中的每个图像,并在动画序列的每个点上重现这帧 动画。所有图像都应具有相同的尺寸,并分配了适当的GIF设置来使图片像GIF动画一样持续工作。这些帧比高度优化的GIF图像覆盖更容易查看和处理。
动画可以在使用了-layers命令的optimize方法处理后进行重新优化,虽然不能确保优化后的GIF动画比原来更好。
 
-colorize  value
使用-fill选项中指定的颜色和value指定的值对图像进行着色处理。
指定的着色值可以是百分比的形式。也可以使用逗号分隔着色值来指定应用于每个R、G、B通道的值(例如“-colorize 0,0,50”)。
 
-colormap  type
定义色图的类型。[ animate display ]
它的类型可以为shared或private。
此选项仅适用于默认的X服务器的视觉设置是伪彩色或灰度色。更多详情,请参阅-visual选项。默认情况下,共享色图是分配的。图像与其它X客户端共享 这些颜色。有些图像的颜色是近似的,因此你的图像可能会和预期效果看起来非常不同。如果选择private类型,图像的颜色就会和定义的效果完全一样。但 是,其它客户端可能就会失去漂亮的颜色。
 
-colors  value
设置图像的首选颜色值。
图像中的实际颜色值可能达不到你的要求,而从来不会有超过要求的情况。注意,它是一个色彩还原选项。如果图像中的颜色值比value指定的值要小的话,将 会删除所有重复或闲置的色彩。并且现有调色板的顺序可能会改变。从彩色图像转换到灰度图像时,在减少颜色数目数目之前先转换为灰度颜色空间会更加有效。有 关详细信息,请参阅色彩还原算法。
 
-color-matrix  matrix
对图像进行颜色修正。
此选项允许进行饱和度调整、色调旋转、透明度以及其它各种效果。虽然允许使用可变大小的变换矩阵,但通常对RGBA图像都使用5x5的矩 阵,CMYKA(或偏置的RGBA)图像使用6x6的矩阵。这和Adobe Flash中使用的矩阵类似,除了偏移量是在第6列而不是第5列(支持CMYKA图像)而且偏移量是归一化的(Flash中的值除以255)。
例如,为图像添加带偏移量的对比度,试试下面的命令:
convert kittens.jpg -color-matrix \
" 1.5 0.0 0.0 0.0, 0.0, -0.157 \
             0.0 1.5 0.0 0.0, 0.0, -0.157 \
             0.0 0.0 1.5 0.0, 0.0, -0.157 \
             0.0 0.0 0.0 1.0, 0.0,   0.0 \
             0.0 0.0 0.0 0.0, 1.0,   0.0 \
             0.0 0.0 0.0 0.0, 0.0,   1.0" kittens.png
 
-colorspace  value
设置图像的颜色空间。
可选项包括:
     CMY                   CMYK                 Gray                 HSB
     HSL                   HWB                   Lab                   Log
     OHTA                 Rec601Luma     Rec601YCbCr   Rec709Luma
Rec709YCbCr   RGB                   sRGB                 Transparent
     XYZ                   YCbCr               YCC                   YIQ
     YPbPr               YUV
如果需要显示更详细的颜色空间,可以使用-list colorspace命令查看。
如果需要更精确的RGB、CMYK和grayscale颜色空间转换,可以使用-profile选项。
RGB到其它颜色空间的转换公式
CMY
C=QuantumRange−R
M=QuantumRange−G
Y=QuantumRange−B
CMYK —首先仍然使用上面的CMY转换公式
K=min(C,Y,M)
C=QuantumRange*(C−K)/(QuantumRange−K)
M=QuantumRange*(M−K)/(QuantumRange−K)
Y=QuantumRange*(Y−K)/(QuantumRange−K)
Gray
Gray = 0.29900*R+0.58700*G+0.11400*B
HSB — 色调(Hue)、饱和度(Saturation)、亮度(Brightness)
颜色空间形如一个尖端向下的圆锥体
H=angle around perimeter (0 to 360 deg); H=0 is red; increasing angles toward green
S=distance from axis outward
B=distance along axis from bottom upward; B=max(R,G,B); intensity-like
HSL —色调(Hue)、饱和度(Saturation)、亮度(Lightness)
颜色空间形如尖端分别朝上和朝下的双锥体
H=angle around perimeter (0 to 360 deg); H=0 is red; increasing angles toward green
S=distance from axis outward
L=distance along axis from bottom upward; L=0.5*max(R,G,B) + 0.5*min(R,G,B); intensity-like
HWB — 色调(Hue)、白度(Whiteness)、黑度(Blackness)
Hue (complicated equation)
Whiteness (complicated equation)
Blackness (complicated equation)
LAB
L (complicated equation relating X,Y,Z)
A (complicated equation relating X,Y,Z)
B (complicated equation relating X,Y,Z)
LOG
I1 (complicated equation involving logarithm of R)
I2 (complicated equation involving logarithm of G)
I3 (complicated equation involving logarithm of B)
OHTA — 主要参数的近似转换公式
I1=0.33333*R+0.33334*G+0.33333*B; intensity-like
I2=(0.50000*R+0.00000*G−0.50000*B)*(QuantumRange+1)/2
I3=(−0.25000*R+0.50000*G−0.25000*B)*(QuantumRange+1)/2
Rec601Luma
Gray = 0.29900*R+0.58700*G+0.11400*B
Rec601YCbCr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Cb=(−0.168736*R-0.331264*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
Rec709Luma
Gray=0.21260*R+0.71520*G+0.07220*B
Rec709YCbCr
Y=0.212600*R+0.715200*G+0.072200*B; intensity-like
Cb=(−0.114572*R−0.385428*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.454153*G−0.045847*B)*(QuantumRange+1)/2
sRGB
if Rs ≤ .04045 then Rs=R/12.92 else Rs=((R+.055)/1.055)^2.4
if Gs ≤ .04045 then Gs=B/12.92 else Gs=((G+.055)/1.055)^2.4
if Bs ≤ .04045 then Bs=B/12.92 else Bs=((B+.055)/1.055)^2.4
XYZ
X=0.4124240*R+0.3575790*G+0.1804640*B
Y=0.2126560*R+0.7151580*G+0.0721856*B
Z=0.0193324*R+0.1191930*G+0.9504440*B
YCC
Y=(0.29900*R+0.58700*G+0.11400*B) (with complicated scaling); intensity-like
C1=(−0.29900*R−0.58700*G+0.88600*B) (with complicated scaling)
C2=(0.70100*R−0.58700*G−0.11400*B) (with complicated scaling)
YCbCr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Cb=(−0.168736*R−0.331264*G+0.500000*B)*(QuantumRange+1)/2
Cr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
YIQ
Y=0.29900*R+0.58700*G+0.11400*B; intensity-like
I=(0.59600*R−0.27400*G−0.32200*B)*(QuantumRange+1)/2
Q=(0.21100*R−0.52300*G+0.31200*B)*(QuantumRange+1)/2
YPbPr
Y=0.299000*R+0.587000*G+0.114000*B; intensity-like
Pb=(−0.168736*R−0.331264*G+0.500000*B)*(QuantumRange+1)/2
Pr=(0.500000*R−0.418688*G−0.081312*B)*(QuantumRange+1)/2
YUV
Y=0.29900*R+0.58700*G+0.11400*B; intensity-like
U=(−0.14740*R−0.28950*G+0.43690*B)*(QuantumRange+1)/2
V=(0.61500*R−0.51500*G−0.10000*B)*(QuantumRange+1)/2
 
-combine
将多张图像合并成到一张图像中
合并的图像通道(在-channel中设置)将按顺序从序列中图像的灰度值中获得。对于默认的RGB通道设置,意味着第一张图像将分配给红色通道,第二张给绿色通道,第三张给蓝色通道。
如果通道设置是相同的话,这个选项可以被看作是-separate的逆操作。因此,在下面的例子中,最终图像应该是原图的副本。
convert original.png -channel RGB -separate sepimage.png
convert sepimage-0.png sepimage-1.png sepimage-2.png -channel RGB -combine imagecopy.png
 
-comment  string
在图像中嵌入评论。
此选项将会在读入的图像元数据中添加评论。要修改图像元数据中已经存在的评论内容,需要使用“-set comment”命令。
评论中可以包含程序允许的特殊字符格式。它们可以在评论最后分配到每张图像时根据具体属性进行扩展。
如果第一个字符是@,图像评论将从以它后面字符为文件名的文件中读取字符串。但是从文件中读取的评论文字不会识别字符嵌入的格式。
图像元数据中的评论对于图像本身是不可见的。如果要显示出来应该使用-annotate或-draw选项。
例如:
-comment "%m:%f %wx%h" bird.miff
这条命令将会产生一条图像评论MIFF:bird.miff 512x480(假设bird.miff图像的宽度为512像素、高度为480像素)。
 
-compose  operator
设置图像合并类型。
可以参考阿尔法通道合并的讲解获得更详细的信息。
此设置会影响合并两个(或更多)图像操作命令对图像的处理方式。这些命令包括:-composite, -layers composite, -flatten, -mosaic, -layers merge, -border, -frame, -extent。
它也是composite命令的主要选项之一。
 
-composite
执行两张图像阿尔法通道的合并,还包括一个可选的蒙版。
根据当前的-compose设置,将第一张destination图像重叠至第二张source图像上。其中source图像的位置通过-geometry选项来设置。
如果存在第三张图像,它将被视为与destination图像相关的一个灰度蒙版。这个蒙版可以在destination图像中设置允许进行修改的区域。不过,对于displace合并方式,蒙版将用来提供一个单独的Y位移图像。
如果-compose选项需要更多的数字参数或标志,那么可以通过使用“-set 'option:compose:args'”来进行设置。
还有一些合并方式可以修改覆盖区域外的destination图像。你可以通过设置“-set 'option:compose:outside-overlay'”为false来禁止这种行为。
 
-compress  type
写图像文件时,使用type指定的像素压缩类型。
选项包括:None, BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE, Zip。
如果需要显示压缩类型的完整列表,使用-list compress命令。
+compress选项表示采用非压缩格式对二进制图像进行储存。默认采用指定的图像文件的压缩类型。
如果设置了LZW压缩方式但该方式并不可用,那么图像会采用一种非压缩的LZW格式,并且可以使用LZW解码器读取。但这可能会导致产生的GIF文件比预期大。
Lossless方式指的是无损JPEG压缩,前提是使用可以支持它的新版JPEG库。但一般不推荐使用无损JPEG格式。
当需要写ICO文件时,你可以通过指定Zip压缩格式来让图像使用PNG格式进行编码。
使用-quality选项设置JPEG、PNG、MIFF和MPEG编码器采用的压缩级别。使用-sampling-factor选项设置JPEG、MPEG和YUV编码器进行色度通道采样时的采样因子。
 
-contrast
提高或降低图像的对比度。
此选项增强了图像的亮区和暗区之间的差异。用-contrast选项来提高图像对比度,或使用+contrast选项降低图像的对比度。
如果需要更加明显的效果,你可以重复使用此选项:
convert rose: -contrast -contrast rose_c2.png
 
-contrast-stretch  black-point
-contrast-stretch  black-point {x white-point }{ % }}
通过拉伸强度值的范围来提高图像的对比度。
如果使用了拉伸,图像中最黑的像素会达到纯黑色,而最白的像素会达到纯白色。或者如果使用了百分比,最黑的像素会达到纯黑色的相应%,最白的像素也会达到纯白色的相应%。
在此前的ImageMagick v6.4.7-0版本中,-contrast-stretch会将最黑的像素变为纯黑色,而所有小于白色的像素都变为纯白色。或者如果使用了百分比,所有小于白色相应%的像素都会变为纯白色。
注意,如果设置为-contrast-stretch 0,那么图像的最小和最大拉伸值将分别修改为0和QuantumRange,这样将不会有任何数据丢失,因为没有在任何一端进行裁剪。所有,它和 -normalize选项并不相同,后者等同于“-contrast-stretch 0.15x0.05%”(ImageMagick v6.4.7-0之前的版本“-contrast-stretch 2%x99%”)。
选项内部的工作原理是首先创建一个直方图,然后使用该图来修改图像。因此原始数据在匹配这个直方图时,部分颜色可能会被合并到一起。
如果在默认的+channel设置下,所有的通道都会进行同样的归一化操作,以保持颜色的完整性。指定任何其它的-channel通道设置,都会使RGB通道独立进行归一化操作。
参考-auto-level选项,可以获得一张完美拉伸的数学图像。
这个操作符仍然处于不断更新中。
 
-convolve  kernel
采用用户提供的卷积内核对图像进行卷积。
内核是一个用逗号分隔的整数(无空格)矩阵,顺序从左至右,从顶行开始。目前,只支持奇数尺寸的内核,因此指定内核中的参数个数必须是3^2=9,5^2=25,7^2=49等。
注意,-convolve选项支持偏置量设置。此参数通过对卷积进行移动,使结果的正负和用户指定的偏置量相关。这对于ImageMagick进行包含正 负数卷积的非HDRI编译来说非常重要。特别是涉及高通滤波器的卷积或边缘检测的情况下,如果没有输出偏置,那么所有负值都会剪切为零。
当ImageMagick使用HDRI编译设置时,偏置量就是没有必要的,因为ImageMagick是能够存储和处理任何负数结果,而不用剪裁至颜色值的范围(0 .. QuantumRange)。有关HDRI的用法请参看Wikipedia条目。
 
-crop  geometry
在图像中剪出一个或多个矩形区域。
有关几何参数的详细信息,请参阅geometry。
geometry的宽度和高度参数指的图像进行裁剪后剩余的区域尺寸,偏移量中的x和y参数(如果存在),指的裁剪后图像的左上角在原始图像中的坐标位置。若要指定需要删除的像素,可以使用-shave命令代替。
如果在几何参数的后面加上“!”,这意味着画布尺寸将和你指定的大小完全相同。
如果裁剪的图像并不在原图的画布范围内,将返回一张特殊的包含一个透明像素的图像,和一个警告信息。
另外,可能有必要使用+repage选项重置图像信息,删除-crop操作中产生的信息。
 
-cycle  amount
根据amount值替换色图。
amount定义了色图中每个条目移动的坐标数。
 
-debug  events
启用调试打印输出。
events参数指定要记录哪些事件。它可以None、All、Trace或以逗号分隔的列表,列表值包括:Accelerate, Annotate, Blob, Cache, Coder, Configure, Deprecate, Exception, Locale, Render, Resource, Security, TemporaryFile, Transform, X11, User。
例如,打印日志缓存和BLOB事件,使用下面的命令:
convert -debug "Cache,Blob" rose: rose.png
虽然用户域通常是空的,但开发人员可以记录用户在它们的私有ImageMagick副本中的事件。
要打印调试选项的完整方便列表,可以使用-list debug。
使用-log选项来指定调试输出的格式。
使用+debug关闭所有的日志记录。
调试也可以采用设置MAGICK_DEBUG环境变量的方法。 MAGICK_DEBUG环境变量允许的值与-debug选项的值是相同的。
 
-decipher  filename
解码,恢复以前编码(-encipher)的像素。
从filename指定的文件中获取口令。
了解更多信息,请参阅 ImageMagick: Encipher or Decipher an Image 网页。
 
-deconstruct
找到图像之间改变的区域。
给定尺寸相同的一组图像序列(比如使用-coalesce选项产生的),将第二张之后的图像用与当前图像不同的那部分小图替代。
处理之后的图像序列可用于优化动画序列,虽然当动画中的一部分会从不透明变为透明时,它就不能在GIF动画中正确的工作。
这个选项实际上等同于-layers选项中的compare-any方法。
 
-define  key { =value } ...
添加具体的全局设置,一般用来控制编码器和图像处理操作。
此选项将为编/解码器创建一个或多个定义,在读/写图像数据时使用。这些定义通常用来控制超出正常定义的图像文件格式编码器模块和图像处理操作。定义的具体设置将在-verbose选项信息中列出。
如果定义中缺少了value值,就会为该名称创建一个空值定义的标志,这可以用来控制开/关某个选项。使用+define key来删除先前创建的定义。使用+define "*"来删除所有创建的定义。
相同的手工设置,也可以使用“-set "option:key" "value"”命令,它在定义值中同样支持图像属性的格式化输出。
其中option和key参数是大小写不敏感的(它们在解码器中都会转换为小写),但value值是大小写敏感的。
并且这个设置是全局的,对所有图像和操作都有效。
下面的定义只是一部分可选设置:
compose:args= arguments
为使用convert命令进行-compose...-composite操作时设置固定的参数值。
distort:scale= value
设置-distort选项的输出缩放因子。
distort:viewport=WxH+X+Y
设置-distort选项的视口参数。
dcm:display-range=reset
为DCM图像格式设置显示范围的最小和最大像素值。
dot:layout-engine= value
给DOT图像格式(如neato)设置指定的布局引擎。
jpeg:extent= value
限制JPEG文件的最大尺寸,例如-define jpeg:extent=400kb。
jpeg:size= geometry
设置JPEG图像的尺寸提示,例如-define jpeg:size=128x128。在大型JPEG图像的尺寸缩减时,它对提高性能和减少内存需求非常有用。
jp2:rate= value
指定写JPEG-2000文件时使用的压缩因子。压缩因子是压缩比率的倒数。有效范围从0.0到1.0,其中1.0表示进行无损压缩。如果定义了,那么该值将覆盖-quality设置。quality设置为75等同于rate设置为0.06641。
mng:need-cacheoff
将MNG流的重播关闭。
png:bit-depth= value
png:color-type= value
设置PNG格式输出所需的位深度和颜色类型。你可以强制PNG编码器使用于通常设置不同的位深度和颜色类型,但前提是这样不会造成任何图像质量的损失。任 何降低图像质量的企图都会被认为是一个错误,然后不会进行PNG的写文件操作。例如,如果你有张1比特的黑与白图像,你可以使用defines选项将它写 成8位灰度索引图,甚至是64位的RGBA图像。但如果你有一张16万色的图像,就不能将它强制写成一张灰度图或带索引的PNG图像。如果你非要实现这个 目标,那么必须在PNG编码之前使用-depth、-colors或-type指令来降低图像的质量。请注意在带有索引的PNG文件中,“位深度”指的是 每个索引中的位数,可以是1、2、4或8。而这些文件中的颜色样本总是8位深度。
png:compression-filter= value
有效值范围是0到7,其中0-4是相应的PNG滤波器,5表示自适应滤波(除了带有色图的图像),6指为所有图像自适应滤波,7表示进行MNG压缩。
png:compression-level= value
有效值为0到9,0提供最少但最快的压缩,9通常提供最好的压缩但总是最慢的。
png:compression-strategy= value
有效值为0到4,默认情况使用哈夫曼滤波,RLE和固定的ZLIB压缩策略。如果你使用老版本的zlib,将不支持Z_RLE(1.2.0之前)或Z_FIXED(1.2.2.2之前),那么设置为3和4,将会使用zlib的默认策略。
png:format= value
有效值为png8、png24和png32。这个属性可以指定具体要使用的PNG格式,而通常在输出文件名的前面加上格式的方法很不方便,例如写成“PNG-编码ICO文件”。
png:exclude-chunk= value
png:include-chunk= value
附属块被排除或包含在PNG输出中。
value值可以使用附属块的类型如BKGD,或用逗号分隔的多个类型,或者最简单的all和none。虽然PNG附属块名是大小写敏感的,但如果愿意你可以全部使用小写名字。
“包含块”和“排除块”定义只影响PNG编码器的操作,并不影响PNG解码器的效果。
作为一个特例,如果sRGB的排除块操作中包含了gAMA,那么只有伽马值为1/2.2时gAMA才会写入,因为如果PNG文件中没有包含色彩信息,大多数解码器会假设为sRGB和gamma=1/2.2。由于列表是由左到右处理的,你可以通过单一的定义来实现:
-define png:include-chunk=none,gAMA
另一种特殊情况,如果sRGB块没有被排除并且PNG编码器确信图像中包含sRGB ICC配置文件,那么PNG编码器会写入sRGB块,而不是整个3144字节的ICC配置文件。如果要强制PNG编码器将sRGB配置文件作为iCCP块 写入输出PNG文件中,那么必须排除sRGB块。
关键的PNG块IHDR、PLTE、IDATIEND不能被排除。清单中出现任何这些条目将会被忽略。
如果辅助的PNG tRNS块被排除并且图像具有透明度,那么PNG的颜色类型将被强制设定为4或6(GRAY_ALPHA或RGBA)。如果图像不透明,那么无论tRNS块添加与否,都不会对输出图像的PNG颜色类型产生影响。
-strip选项等同于以下的PNG输出:
-define png:include-chunk=none,trns,gama
默认设置是包括所有已知的PNG配套块,外加ImageMagick的私有vpAg(virtual page)块,并排除所有ImageMagick未知的PNG块,不论图片的PNG描述规范中的“copy-safe”状态是如何设定的。
任何在“包含块”和“排除块”列表中出现的ImageMagick不知道的PNG块都将会被忽略。目前已知的ImageMagick的配套块包括 bKGD, cHRM, gAMA, iCCP, oFFs, pHYs, sRGB, tEXt, tRNS, vpAg, zTXt。
你也可以把日期写入列表中来实现添加或排除“Date:create”和“Date:modify”文本块,通常在输出的PNG图像中ImageMagick插入了这个块。
png:preserve-colormap
使用现有图像的色图(colormap)。通常情况PNG编码器将会尝试优化调色板,删除未使用的条目,并且首先删除透明颜色。如果设置了这个标志,这种行为就会受到限制。
ps:imagemask
如果ps:imagemask标志进行了定义,那么PS3和EPS3编码将会为双层图像的PostScript文件创建imagemask选项而不是创建image选项。
quantum:format= type
将类型设置为浮点数(floating-point)可以指定一个浮点格式的原始数据文件(如GRAY:)或使HDRI模式下MIFF和TIFF图像保持 其中的负值。如果包含了“-depth 16”设置,其结果就是一个单精度的浮点格式。如果包含了“-depth 32”,结果是双精度的浮点格式。
showkernel=1
输出(标准错误)生成的-morphology内核中的所有相关信息。
tiff:quantum:polarity=min-is-black
tiff:quantum:polarity=min-is-white
切换光度测定的解释
tiff:rows-per-strip= value
设置每带(strip)中包含的行数
tiff:tile-geometry= WxH
设置金字塔形TIFF文件的拼接尺寸,需要在输出文件(outputname)前添加后缀PTIF。
例如,要创建一个PostScript文件,将只呈现出一个双层图像的黑色像素,那么使用:
convert bilevel.tif -define ps:imagemask eps3:stencil.ps
设置图像的注册表属性可以通过在图像的前缀registry:后添加注册表值来实现。例如要给工作文件设置一个临时的路径,使用:
-define registry:temporary-path=/data/tmp
 
-delay  ticks
-delay  ticks x ticks-per-second  { < } { > }
在暂停后显示下一张图片。
此选项对于调节动画图像序列的跳(ticks)/跳每秒(ticks-per-second)的时间非常有用,前一张图片必须在下一张图片显示前到期。默认情况是图像序列中的每张图像之间的显示没有延迟。默认跳每秒的值为100。
使用“>”表示只有图像当前的值大于设定的延迟时才改变图像的延迟。“<”表示只有当前的延迟值小于给定的值时才改变图像的延迟。例如,如果 您指定“30>”并且现在图像的延迟值为20,那么图像的延迟将不会改变。但是,如果现在图像的延迟值是40或50,那么命令就会将它改为30了。 最好将给定的延迟值用引号括起来,以防止“<”或“>”被你的shell程序解释为文件重定向标志了。
 
-delete  indexes
根据指定的索引号从图像序列中删除图像。
指定序列中图像的索引号。第一个图像的索引号为0。负值索引号是相对序列的尾部进行计数的,例如,-1代表该序列的最后一张图像。可以使用破折号来指定一 个范围的图像(如0-4)。还可以用逗号分隔不同的索引号(如0,2)。使用+delete命令将删除当前图像序列的最后一张图像。
 
-density  width
-density  width x height
设置图像在设备中显示的水平和垂直分辨率。
此选项会在文件编码成光栅图像时指定图像的分辨率,并且在读入矢量格式如PostScript、PDF、WMF、SVG等成为光栅图像时指定画布的分辨 率。图像分辨率为输出设备或光栅图像的显示提供了使用的度量单位。默认度量单位是点数每英寸(DPI)。-units选项也可以选择点数每厘米作为度量单 位。
默认分辨率为72 DPI,这就相当于每个像素包含一个点(Macintosh和Postscript标准设置)。电脑屏幕通常是72或96 DPI,而打印机通常支持150、300、600或1200 DPI。要确定你的显示器分辨率,可以用一把尺子来测量屏幕的宽度(单位英寸),然后除以屏幕的水平像素(如1024x768显示屏中的1024)。
如果文件格式支持的话,此选项还可用于更新图像的分辨率。请注意,Photoshop存储和获取图像分辨率将从一个专有嵌入的配置文件中得到。如果此配置文件被从图像中删除,那么Photoshop将使用前一张图像的分辨率,而忽略标准文件头中指定的图像分辨率。
-density选项设置的属性,并不会改变基本的光栅图像。它可以通过调整像素的规模来实现校正桌面出版系统显示尺寸的目的。如果要在不同的分辨率下显示相同的尺寸,那么需要使用-resample选项来调整图像尺寸。
 
-depth  value
图像的深度。
它是指一像素的颜色样本中包含的数据比特位。使用此选项来指定未知深度的原始图像的深度,如GRAY、RGB或CMYK,或改变任何读入内存的图像的深度。
 
-descend
降低窗口的层级来获得图像
 
-deskew  threshold
拉伸图像。对于大多数图像采用40%的门限值。
使用“-set option:deskew:auto-crop width”命令来自动裁剪图像的宽度。设置的参数是图像背景的像素宽度(如40)。
 
-despeckle
减少图像中的斑点。
 
-direction  type
设置文本从左至右或者从右至左的方向。
 
-displace  horizontal-scale
-displace  horizontal-scale x vertical-scale
根据置换图对图像像素进行位移操作。[ composite ]
使用此选项,重叠图像和选择蒙版如下都可以作为置换图,它们将用来取代查找表,控制背景图像中覆盖区域的每个点是否可以被看见。置换图就像是一个“镜头”,可以重定向闪光灯照射的方向原始的背景图像之后的图像呈现出来。
置换图中的任何纯灰色区域将不会使图像中的像素发生位移。黑色区域将使查询点产生最大的负位移,而白色区域会让查询点产生最大的正位移。
请注意,它是背景图像中被替换部分的查找表,而不是图像本身的位移。例如置换图中包含白色的区域将会让查询点实现正位移,从而生成的目标图像副本将处于向右/向下的正确位置。看起来就像是原图被移动到向左/向上的地方。理解这一点对于理解置换图是如何工作的非常重要。
给定的参数定义了在一个特定的置换图中可以产生的最大像素位移。如果位移值非常的大,它也可以允许背景图像中的查询点超出置换图本身的界限区域。这就让你可以很容易地将原始图像覆盖区域外的部分复制到区域内。
“%”标志表示位移量相对于叠加图像的百分比(100%=半宽/图像高度)。使用“!”可以将百分比参数的参考图像尺寸换为目标图像的。这些标志在IM v6.5.3-5版本中加入的。
通常情况下提供单一的灰度位移图,给定的比例值将决定一个位移发生的方向(正值或负值)。但是,如果你还指定了第三张图像,通常是用作蒙版的,那么合并图 像(composite image)将用于控制水平X位移,而蒙版图像(mask image)用于垂直Y位移。这允许你定义完全不同的X和Y方向的位移值,并且可以查找scale范围内的任何一点。换句话说,就是每个像素都可以查找它 附近任何其它像素,来产生复杂的二维位移而不是简单的一维向量位移。
此外,除了IM v6.4.4-0版本中的提供两个单独图像的方式,你还可以使用覆盖图像的red通道来指定水平或X位移,green通道指定垂直或Y位移。
在IM v6.5.3-5版本中,任何覆盖图像中的阿尔法通道都将用来作为目标图像的透明度蒙版。但是不会影响覆盖区域外的部分。
 
-display  host:display[.screen]
指定连接的X服务器。[ animate display ]
这个选项在convert命令中是用来从X服务器上获取图像或字体。
 
-dispose  method
定义创建或读入的GIF图像处理设置。
层处理方法定义了每帧显示的图像被修改的方式,它发生在动态图像的当前帧结束显示后(在它的延迟后),但在下一帧动画覆盖到显示屏上前。
下面是有效的方法:
未定义(Undefined)0无指定的处理方法(相当于“None”)。
无(None)1不进行处理,只只简单的覆盖下一帧图像。
背景(Background)2清除帧区域中的背景颜色。
之前(Previous)         3       将图像清理到这个帧叠加前的状态。
你也可以使用上面给出的数字,它是GIF格式内部使用的代表上述设置的编号。
要打印处置方法的完整列表,请使用“-list dispose”。
使用+dispose命令将关闭该设置,并阻止重置该层处置方法的图像被读入。
使用-set 'dispose'的方法来设置已经读入在内存中图像的处理方法。
 
-dissimilarity-threshold  value
子图像匹配的最大RMSE(默认为0.2)。[ compare ]
 
-dissolve  src_percent [x dst_percent ]
根据给定的百分比将图像溶解到另一张图像中。[ composite ]
合并图像的不透明度将乘以给定的百分比,然后与主体图像进行合并(Over方法)。如果src_percent大于100,那么会对主体图像进行溶解,当值达到200时主体图像将变得完全透明。如果选项中的两个百分比都给定了,那么每个图像都将溶解到给定的百分比。
请注意,如果选项中一个百分比都没给定,那么两个不透明图像将溶解为“50,50”,产生出75%的透明度。对于50%+50%的两个图像的融合,你需要使用溶解值“50,100”来实现。
 
-distort  method arguments
使用给定的方法和所需的参数对图像进行扭曲操作。
参数(arguments)是一个字符串,其中包含了使用逗号或空格分隔的浮点数列表。浮点数的个数和含义取决于所使用的扭曲方法(method)。
下列的扭曲类型可供选择:
方法(Method) 描述(Description)
ScaleRotateTranslateSRT 扭曲图像时,首先将一个给定的“中心”进行缩放和旋转,然后再将“中心”按顺序转换到新的位置。它是“Affine”扭曲类型的替代方法,但没有剪切效果。它还提供了一个更好的方法来实现旋转或将小图像平铺到一张更大的背景中(IE 2维动画)。
参数的个数确定了每个参数的具体含义,包括缩放、旋转、转换等操作。
#参数的意义
1:角度(旋转)
2:缩放,角度
3:X,Y,角度
4:X,Y,缩放,角度
5:X,Y,缩放X,缩放Y,角度
6:X,Y,缩放,角度,新建X,新建Y
7:X,Y,缩放X,缩放Y,角度,新建X,新建Y
这实际上是2维线性仿射(Affine)或AffineProjection扭曲的一种替代方法。
Affine 通过移动至少3个或更多的控制点(定义见下文)来对图像进行线性扭曲。理想的情况下是根据这三个点提供3组或12个浮点值,使图像完成线性缩放、旋转、剪切和转换。相关信息请参阅“AffineProjection”和“SRT”扭曲。
如果给定了超过3组的控制点对(12个),那么将使用最小二乘法来实现线性仿射扭曲的最佳匹配。如果只有2个控制点对(8个),那么只能进行两个点的图像 平移旋转和缩放操作,不会进行任何的剪切、翻转或变化结果图像的宽高比。如果只提供了一个控制点对,那么图像只会完成移动(可以进行浮点数,即非整数的移 动)。
这种扭曲,不包括任何形式的透视畸变。
AffineProjection 使用给定6个计算系数的仿射矩阵,形成了一个源图像到目标图像的仿射方程进行图像的线性扭曲。
sx, rx, ry, sy, tx, ty
参看-affine选项获得更多的细节和这些系数的含义。
“Affine”和“SRT”扭曲方法提供它的替代方法,ImageMagick为我们自动提供了所需的计算系数。你还可以通过使用-verbose选项和其它变量,来看到程序内部产生的系数。
BilinearForward
BilinearReverse
双线性扭曲,最少需要4组坐标对或16个值(见下文)。如果不这样的话,扭曲操作后直线可能会变得弯曲,虽然坐标之间的距离仍然保持一致。
“BilinearForward”是将矩形映射为任何形状的四边形,而“BilinearReverse”是把任何形状的四边形映射到一个矩形中,同时在每种情况下都会保留直线边缘。
请注意,“BilinearForward”在使用-mattecolor颜色设置时可能会产生无效的彩色像素。此外,如果四边形进行了“翻转”,那么图像可能会消失。
在未来,我们计划设计一个真正的双线性扭曲,将尝试将任何形状的四边形映射为其它任何形状的四边形,同时保留边缘(以及边缘的距离比)。
Perspective 透视扭曲图像,使用4个或更多的控制点(定义见下文)。如果多于4组控制点(16个),将会利用最小二乘法实现更准确的扭曲(达到图像配准和全景的效果)。如果小于4组,将会执行线性仿射扭曲。
透视扭曲的图像可以确保直线在变换后仍为直线,但扭曲图像的缩放将有所不同。其中地平线都是反锯齿的,而“天空”的颜色可以使用-mattecolor选项进行设置。
PerspectiveProjection 进行一次透视扭曲需要预先准备8个计算系数。你可以通过使用-verbose选项查看透视扭曲输出的详细系数,或通过自己计算来得到这些系数。如果最后两个角度缩放系数均为零,其余6系数就相当于一个转置仿射矩阵。
Arc 根据给定的角度对图像进行一个弧形扭曲变化。
参数含义
arc_angle图像进行弧形变化的角度
rotate_angle图像相对于垂心的旋转角度
top_radius图像顶部边缘弧度半径
bottom_radius图像底部边缘弧度半径(径向缩放)
结果图像总是被调整到最合适的尺寸,(如果使用+distort)同时试图保持用户给定参数的最大缩放和原始图像的宽高比。需要使用所有四个参数来改变一个弧形变化后图像的整体宽高比。
这是polar扭曲的一个变体,设计它就是为了尽量保持图像的宽高比,而不是对polar扭曲使用直接的笛卡尔变换。
Polar 和“Arc”操作相似,但要对图像的Polar操作做一次完整的笛卡尔变换。也就是输入图像的高度映射到半径限制上,而宽度是包含在角度限制之间。
参数:Rmax,Rmin,CenterX,CenterY, start,end_angle
所有参数都是可选的的。Rmin默认为零,就是从中心到图像的中心,角度范围从-180(顶部)到180(顶部)。如果Rmax值为特殊的0,那么从中心 到最近边缘的距离将用于输出图像的半径,这可以确保整个图像是可见的(虽然尺寸较小)。另外一个特殊值“-1”,将使用从中心到最远角落的距离,这可能会 获取到输入矩形图像的角落,会产生“DePolar”使用同样参数的反向效果。
如果使用+形式的扭曲(+distort),那么输出图像的中心将默认为虚拟画布的(0,0)处,并且图像调整尺寸来确保输入图像在虚拟画布上的输出图像中是可见的。
DePolar 和Polar扭曲选项使用相同的参数和含义,但是与Polar扭曲实现了反向的笛卡尔扭曲。
如果将参数Rmax设置为特殊的0,就可能将输入图像的角落剪切掉。但是,如果Rmax设置为特殊的-1(中心到角落的最大距离),将确保整个扭曲的图像 都保留在生成的结果中,因此如果在Polar中使用同样的参数,将颠倒重新生成的扭转图像。请注意,这种失真需要重新采样圆弧区域,并且不能使用内建的 EWA重采样功能。因为这种正常的EWA过滤器会被关闭。我们建议采用某种形式的“超级采样”图像处理技术来产生高质量的结果。
Barrel 给定由Helmut Dersch定义的四个系数(A,B,C,D),执行桶形或枕形扭曲来适当的修正径向镜头扭曲。就是在照片中让直线保持直的状态。
参数:A B C [ D [ X , Y ] ]
或Ax Bx Cx Dx Ay By Cy Dy [ X , Y ]
因此,它构成了下列函数
Rsrc = r * ( A*r3 + B*r2 + C*r + D )
其中X和Y是可选的扭曲中心(默认为图像的中心)。
第二种形式通常用于扭曲图像,而不是修正镜头扭曲。
BarrelInverse 这个方法与“Barrel”非常的类似,并且具有相同的参数设置和参数处理。但是,它使用的是径向多项式的倒数,使其形成下列函数
Rsrc = r / ( A*r3 + B*r2 + C*r + D )
请注意,这并不是“Barrel”扭曲的反向,只是不同桶状的径向扭曲方法。
Shepards 使用逆平方距离插值方法(Shepards方法)扭曲控制点列表(任何数字)。生效的控制点会将图像放置到给定的控制点周围(保持图像的外观和控制点附近 区域的旋转)。为获得最佳结果,应该加入额外的控制点来锁定角落、边缘和其它图像不变部分的位置,以防止它们移动。
这种扭曲方法就像用钉子或针将太妃糖似的胶状块卡住,然后将它转移到新的位置,产生的扭曲表面。
在内部,它相当于使用-sparse-color同名的方法来产生源图像颜色查找表的位移地图(见-displace)。
要打印扭曲方法的完整列表,使用-list distort。
上面许多扭曲方法比如“Affine”、“Perspective”、“Shepards”都使用控制点列表来定义如何使给定图像中的控制点被扭曲到目标图像中去。每组4个浮点值都表示源图像坐标和紧接它的目标图像坐标。这样就产生了一个如下列列表的形式:
U1,V1 X1,Y1 U2,V2 X2,Y2 U3,V3 X3,Y3 ... Un,Vn Xn,Yn
其中,源图像中的(U,V)将映射到目标图像上的(X,Y)。
例如,使用“perspective”方法来扭曲图像需要至少4组坐标(或16个数字)的列表。下面是程序内置“玫瑰”图像的perspective扭曲。注意命令中如何使用4组空间坐标对,以使其更易于阅读和理解。
convert rose: -virtual-pixel black \
-distort Perspective '0,0,0,0 0,45,0,45 69,0,60,10 69,45,60,35' \
rose_3d_rotated.gif

如果给定了超过要求数量的坐标对,那么扭曲方法将采用最小二乘法拟合所有给定的坐标对以产生最好的结果。如果达不到理想的数量,那么扭曲操作通常会下降为更简单的可以出来较少坐标对的扭曲形式(通常是线性仿射(Affine)扭曲)。
通过使用更多的坐标点,你可以利用图像配准工具找到重叠图像中匹配的坐标对,从而获得更合适的扭曲效果。当然一组不正确的坐标对也可以产生非常不合适的扭曲。必须始终保持谨慎。
当放大图像时,需要根据-interpolate颜色查找设置从源图像中获得颜色值。但是,如果显示的图像被缩小了,那么就会使用一个特殊的区域重采样函 数(在ImageMagick v6.3.5-9版本中增加的)来产生更高质量的图像。例如,你可以使用“perspective”扭曲来查看一个无限平铺的“飞机”直到地平线上。
convert -size 90x90 pattern:checkerboard -normalize -virtual-pixel tile \
-distort perspective '0,0,5,45 89,0,45,46 0,89,0,89 89,89,89,89' \
checks_tiled.jpg

请注意,无限平铺perspective图像一直到地平线,生成的速度是非常缓慢的,因为使用了高品质的区域重采样功能(在ImageMagick v6.3.5-9版本中增加的)。你可以关闭区域重采样功能,通过使用-filter选项的“point”设置。
如果图像产生了无效的像素,比如perspective扭曲例子中的“天空”像素,-distort选项将使用-mattecolor设置来处理这些像素。如果你不想让这些像素显示处理,那就将颜色设置为匹配其余背景的值。
默认情况下,输出图像的大小与输入图像相同。这意味着如果扭曲图形的一部分被移动到了显示区域的外面,这些部分就会被裁剪和丢失。然而,如果你使用选项加 号的形式(+distort)将会尝试(如果可能的话)显示出整个扭曲的图形,同时保持正确的虚拟画布偏移和图像层次感。这个偏移需要使用+repage 选项来删除如果你不想保存这个值的话。
你也可以使用一个特殊的“-set option:distort:viewport {geometry_string}”设置来指定扭曲图形空间中生成扭曲图像的尺寸和偏移量。
添加“-set option:distort:scale {scale_factor}”命令可以根据其中的scale_factor调整输出图像(视口或以其它方式)的尺寸,而不改变扭曲图像的显示内容。这可 以用于生成高质量图像的“超级采样”操作,或者围绕的图像平移和缩放操作(通过适当的视口变化,或在扭曲后切割和调整)。
设置-verbose选项,将导致-distort命令试图输出其内部系数,-fx就相当于扭曲操作,这个可用于专业研究和调试。但是,这不是所有的扭曲操作都提供的。
仿射旋转和倾斜(如SRT扭曲)操作往往会比相似的-rotate和-shear选项产生一个更加精确的结果,因为它提供了更多的控制设置。但是复杂的算法会使变换比较慢,相信在ImageMagick的改进版本中这种情况会得到改善。
 
-dither  method
图像在进行一般的色彩还原或自动保存到指定的格式时,采用Riemersma或Floyd-Steinberg误差扩散抖动处理。在默认情况下它是启用的。
抖动将混合两个或多个相邻像素的颜色,使眼睛看见的图像更接近于它原来颜色的重现。这减少了重现图像时所需要的色彩,但也造成了较低水平的颜色模式。误差扩散抖动可以使用图像中的任何颜色集(生成的或用户自定义的)。
抖动是默认打开的,如需将其关闭使用选项的加形式+dither。这也将同时呈现没有文字或图形锯齿的PostScript。禁用抖动通常(但并不总是)可以达到更快的处理速度,更少的颜色数量,和更卡通的图像色彩。通常会导致在色彩渐变的区域产生色带效果。
-colors、-monochrome、-remap和-posterize等色彩还原选项使用它们自己创建的还原色来进行图像抖动。这些选项也作为自动色彩还原操作的一部分,用来将图像保持为限制颜色的格式,如GIF和XBM等,所以抖动也可以在这些情况下使用。
另外,你还可以使用-random-threshold选项来产生纯粹的随机抖动。或者使用-ordered-dither进行门限映射抖动模式,它将使用统一的色图,而不是具体的色图。
 
-draw  string
使用一个或多个图元来注释图像。
使用此选项并采用一个或多个图元来注释或装饰图像。图元包括图像的形状、文本、变换和像素操作。
形状图元:
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
文本图元:
text                       x0,y0 string
文本gravity图元:
gravity                 NorthWest, North, NorthEast, West, Center,
                                     East, SouthWest, South, or SouthEast
文本的gravity图元只影响文本的位置而不影响其它图元。这相当于使用-gravity命令行选项,除了这是被限制在-draw选项显示的有限范围内。
变换图元:
rotate         degrees
translate   dx,dy
scale           sx,sy
skewX           degrees
skewY           degrees
像素操作图元:
color   x0,y0 method
matte   x0,y0 method
形状图元将使用-fill选项设置的颜色进行图像的颜色填充。如果不需要填充形状颜色,请使用“-fill none”。你还可以使用-stroke 和-strokewidth选项随意控制形状的轮廓。
点(point)图元需要在像素平面中指定一个点,即是一对有序的整数坐标x和y。(由于只涉及单个像素点,因此不受-stroke或-strokewidth影响)
线(line)图元需要设置一个起点和一个终点。
矩形(rectangle)图元需要指定一对点分别是左上角和右下角。
圆边矩形(roundRectangle)图元也需要指定左上角和右下角的一对点,并且还要接着指定圆角横向和纵向的宽度。
圆形(circle)图元可以生成盘状(填充)或圆环(空心)。只用指定中心点和边界上的任何一点。
弧形(arc)图元用于在给定的矩形中显示一段椭圆弧。需要设置矩形的两个对角点,然后是弧形的起始点和终止点的角度(如130,30200,10045,90)。并且产生的起点和终点会通过线段连接起来,椭圆段也会被填充。
使用椭圆(ellipse)可以绘制部分(或完整)的椭圆形。给定中心点、横向和纵向半径,并指定开始和结束的角度(例如100,100100,1500,360)。
折线(polyline)和多边形(polygon)图元需要三个或更多的点来定义它们的周长。折线是一个简单的多边形,只是在起点和终点没有连接。当没有填充时,这就是一个折线。如果-stroke设置为none(默认),那么折线就是完全相同的多边形。
坐标就是用空格或逗号分隔的一对整数。
下面介绍一个例子,将圆形中心点定义在(100,100),并一直延伸到(150,150)。
-draw 'circle 100,100 150,150'
贝塞尔(Bezier)图元会创建一条曲线,需要三个或以上的点来确定其形状。第一个和最后一个点是结点,中间的坐标都是控制点。如果指定了两个控制点, 那么结点和靠近的控制点之间的线段决定那端曲线的切线方向。如果指定了一个控制点,那么控制点和结点之间的线段觉得了每端的切线方向。如果指定了两个以上 的控制点,那么额外控制点的作用结合起来,以确定曲线的中间形状。如果要绘制复杂的曲线,强烈建议你使用路径(path)图元,或绘制多个四点贝塞尔曲线 段。例如:
-draw 'bezier 20,50 45,100 45,0 70,50'
-draw 'bezier 70,50 95,100 95,0 120,50'
路径(path)代表一个对象的轮廓,定义了moveto(设置新的当前点)、lineto(绘制直线),curveto(绘制贝塞尔曲线)、arc(椭 圆形或圆弧)和closepath等方面。复合路径(即用于子路径的路径,它们每个都包含了单一的moveto在一个或多个直线或曲线操作之后)可以允许 产生出甜甜圈效果的图像。(见 Paths
使用image方法将一张图像与另一幅图像合并。图像关键字包括合并选项、图像位置、图像尺寸和文件名。
-draw 'image SrcOver 100,100 225,225 image.jpg'
你可以使用0,0作为图像的尺寸,这表示使用图像头中发现的实际尺寸。否则,它将被缩放到给定的尺寸。阿尔法通道合并方法的详细讨论请看 Alpha Compositing 。使用了特殊参数的合并选项如-dissolve目前还不能和-draw image命令一起使用。
使用text方法可以在图像中注释文字。在文本字符串之前设置它的坐标。如果字符串中包含空格,需使用单引号或双引号括起来。
例如,下面的例子将对文件名为bird.miff的图像注释Works like magick!文字。
-draw "text 100,100 'Works like magick!' "
请参阅-annotate选项获得另一种为图像注释文字的更加方便的方法。
旋转(rotate)图元将相对于原始图像旋转随后的形状图元或文本图元。如果-region选项处于-draw选项之前,那么转换的起始点就是该区域的左上角。
变换(translate)图元将对随后的形状和文本进行变换操作。
scale图元将缩放图像的原始尺寸。
skewX和skewY图元将会对主体形象或指定区域进行倾斜。
变换操作将会修改当前的仿射矩阵(最初的-affine选项定义的初始仿射矩阵)。变换操作将作用于-draw选项。而初始仿射矩阵将不受影响,它只能使用另一个-affine选项才能改变。如果出现另一个-draw选项,当前的仿射矩阵将被重新初始化为最初的仿射矩阵。
使用color图元将一个像素的颜色改变为填充颜色(见-fill)。在像素坐标后方法:
point
replace
floodfill
filltoborder
reset
考虑到目标像素是采用坐标指定的。“point”方法会重新对目标像素着色。“replace”方法会对任何与目标像素颜色相匹配的像素进行重新着色。 “floodfill”方法对任何与目标像素颜色相匹配并且相邻的像素进行重新着色。而“filltoborder”方法会对任何相邻的非边框颜色的像素 进行重新着色。最后,“reset”会对所有像素进行重新着色。
使用matte方法将像素的磨砂值变为透明的。在像素坐标后添加方法名(参见color图元的方法描述)。“point”方法改变目标像素的磨砂值。 “replace”方法改变任何与目标像素颜色相匹配的像素的磨砂值。“floodfill”方法改变任何与目标像素颜色相匹配并且相邻的像素的磨砂值, 而“filltoborder”方法会改变任何非边框颜色的邻居像素的磨砂值。最后,“reset”方法改变所有像素的磨砂值。
你可以设置初始颜色、字体、字体边界框颜色填充通过-fill、-font和-box选项,而且这些选项将按照命令顺序进行处理,所以一定要在-draw选项之前使用。
以数字开头的字符串必须用引号括起来(如使用'1.png',而不是1.png)。
 
-duplicate  count,indexes
复制图像一次或多次。
指定复制次数和要复制的图像在序列中的索引号。第一张图片的索引号为0。负索引号是相对于序列的末尾进行计算的,例如,-1代表序列中最后一张图像。用破 折号(如0-4)指定一个范围内的图像。用逗号作为分隔的标志(如0,2)。使用+duplicate命令复制当前图像序列最后一张图像。
 
-edge   radius
探测图像的边缘。
 
-emboss   radius
使图像生成浮雕效果。
 
-encipher   filename
加密像素文件,稍后可以使用-decipher进行解密。
通过filename指定口令。
更多信息请参考 ImageMagick: Encipher or Decipher an Image
 
-encoding   type
指定文本的编码类型。
编码类型包括:AdobeCustom, AdobeExpert, AdobeStandard, AppleRoman, BIG5, GB2312, Latin 2, None, SJIScode, Symbol, Unicode, Wansung。
 
-endian   type
指定图像的字节顺序(最高有效位MSB或最低有效位LSB)。
需要打印endian选项的完整type类型,使用“-list endian”命令。
使用+endian选项还原为未指定字节顺序的状态。
 
-enhance
使用数字滤波器来增强噪声图像。
 
-equalize
按通道进行图像的直方图均衡化。
在图像的所有通道上执行直方图均衡化操作,将图像转换为其它的一些颜色空间,例如HSL、OHTA、YIQ或YUV,然后对适当的通道进行均衡,最后将其转换回RGB图像。
例如,对于使用HSL颜色空间,我们就有下面几种命令:-colorspace HSL; -channel lightness; -equalize; -colorspace RGB等。
对于YIQ、YUV和OHTA将使用红色通道。例如,OHTA是一个主要组成部分的转换,它将大部分的信息放在了第一个通道中。在这里我们有:-colorspace OHTA; -channel red; -equalize; -colorspace RGB等。
 
-evaluate   operator value
通过评估算法、关系式或逻辑表达式来改变通道的像素。
(参见-function选项了解多参数函数。参见-fx选项,如果需要进行更复杂的计算。)
在下面的列表中总结了每个operator的含义。为简便起见,以下简称“像素”的数值是相应通道的像素值,而“归一化像素”是指这个数字除以最大 QuantumRange值(安装时确定的)。(如果使用了归一化像素,在进行其它计算时,需要乘以QuantumRange值来进行恢复。)
operator介绍
Abs 将value添加到像素中,返回绝对值。
Add 将value添加到像素中。
AddModulus 将value添加到像素模块的QuantumRange中。
And 使用二进制的像素值与value进行与(and)运算。
Cos, Cosine 使用增加了50%偏移的频率值对像素进行cos运算。
Divide 用像素值除以value。
Exp, Exponential 以e为底的幂函数。
LeftShift 按照value对像素值进行左移(例如,用像素值乘以2value)。
Log 对归一化像素进行对数运算
Max 从最小值处剪切像素。
Mean 将value加起来,然后除以2。
Median 从图形序列中选择中值。
Min 从最大值处剪切像素。
Multiply 用value乘以像素值。
Or 使用二进制的像素值与value进行或(or)运算。
Pow 对归一化像素按照value进行乘方运算。
RightShift 按照value对像素值进行右移(例如,用像素值除以2value)。
Set 将像素值设定为value。
Sin, Sine 使用增加了50%偏移的频率值对像素进行sin运算。
Subtract 按value对像素进行剪切。
Xor 使用二进制的像素值与value进行异或(xor)运算。
Gaussian-noise  
Impulse-noise  
Laplacian-noise  
Multiplicative-noise 等同于使用相应的-noise选项
PoissonNoise  
Uniform-noise  
Threshold 设定value为门限值。
ThresholdBlack 将阈值范围设定为0到value。
ThresholdWhite 将阈值范围设定为value到最大值。
上面指定的功能只对先前在图像-channel选项中设置的通道起作用。如果有必要,计算结果将被截断(剪切)以匹配范围 [0,QuantumRange]。图像的阿尔法通道使用“alpha”值来代表(0表示完全透明),因此例如,将阿尔法通道值除以2就会得到半透明图 像。附加百分比符号“%”表示QuantumRange百分比的值。
要打印完整-evaluate选项的列表,使用“-listevaluate”命令。
使用-level和+level选项和适当的参数设置也可以实现Add、Subtract和Multiply的方法,对整个范围内的颜色值进行线性修改。 请注意,-level选项将透明度视为“matte”值(0 =不透明),同时-evaluate则视为“alpha”值。
AddModulus方法是在ImageMagick6.4.8-4版本中添加的,并提供QuantumRange的模块。因此,它相当于Add方法除非像素值在[0,QuantumRange]范围以外。
Exp或Exponential方法是在ImageMagick6.6.5-1版本中加入的,并且工作于归一化的像素值。它使用的value值应该是负数,以产生指数衰减函数。如果是非负值,就会在[0,QuantumRange]范围以外产生扩大的结果。表达式如下。
exp(value × u)
如果将输入图像进行平方操作,例如使用-function polynomial "2 0 0",就会生成衰减高斯函数。
Log方法是在ImageMagick6.4.2-1版本中加入的,也工作于归一化的像素值。log使用的value提供了一个比例因子,来调整log函数的曲率。对u进行归一化的公式如下。
log(value × u + 1) / log(value + 1)
Pow方法是在ImageMagick6.4.1-9版本中加入的,工作于归一化的像素值。请注意,Pow方法与-gamma选项相关。例 如,“-gamma 2”相当于“-evaluate pow 0.5”,即平方根功能。-gamma中的值就是Pow所使用值的倒数。
Cosine和Sine方法是在IM v6.4.8-8版本中加入的,将图像值根据正(余)弦函数进行转换。也可以使用简写Cos和Sin。输出被进行了50%的偏置和50%标准化处理,以适 应各自的颜色值范围。value决定了函数的周期(频率),从而决定了输入颜色范围中将会生成的“波”数。例如,value是1,有效周期就是 QuantumRange,但如果value为2,有效周期是QuantumRange的一半。
0.5 + 0.5 × cos(2 π u × value).
也可以参考-function选项,它是-evaluate选项支持多个值的版本。
 
-evaluate-sequence   operator
通过评估图像序列的算法、关系式或逻辑表达式,来改变通道的像素。
 
-extent   geometry
设置图像的尺寸和偏移。
如果图像被放大,填补区域将设置为背景颜色。使用-geometry选项中的偏移和-gravity设置对图像进行定位。如果要指定合并图像与背景图像,请使用-compose选项。
此命令将缩小或放大一张JPEG图像,以适应800x600的显示屏。如果输入图像的宽高比不是精确的4:3,那么图像将在800x600的黑色画布中居中显示:
convert input.jpg -resize 800x600 -background black -compose Copy \
-gravity center -extent 800x600 -quality 92 output.jpg

图像-geometry参数的完整细节请参考 Image Geometry
 
-extract   geometry
从图像中提取指定的区域。
此选项是最有效的方法从一张非常大的原始图像中提取子区域。请注意,下面两个命令是等价的:
convert -size 16000x16000 -depth 8 -extract 640x480+1280+960 \
image.rgb image.png
convert -size 16000x16000 -depth 8 'image.rgb[640x480+1280+960]' \
image.rgb image.png
如果省略偏移:
convert -size 16000x16000 -depth 8 -extract 640x480 \
image.rgb image.png
如果将图像调整到指定的尺寸:
convert -size 16000x16000 -depth 8 -resize 640x480 image.rgb image.png
 
-family  fontFamily
设置文本的字体家族。
此选项设置了一个字体家族,ImageMagick会尽量使用这种字体进行文本渲染操作。如果发现了可以使用的这个家族字体就使用它;但是如果没有发现, 就用默认字体(如“Arial”)或类似的家族字体取代(例如,可以使用“Courier”字体来取代设置的“System”字体家族,如果没有发现它的 话)。
对于其它影响字体的设置选项,请参考选项-font、-stretch、-style和-weight。
 
-features  distance
在四个方向上(horizontal、vertical、left和right对角线)根据指定距离显示图像中每个通道的特性。
 
-fft
实现正向的离散傅立叶变换(DFT)。
此选项是在ImageMagick6.5.4-3版本中新加入的(同时Windows用户现在使用的ImageMagick6.6.0-9版本也支持这个 选项)。它将图像从正常的时域(空间)映射到了频域。在频域中,图像代表了不同幅度正弦波极其复杂的叠加。图像的x和y坐标就是分别沿x和y方向可能的频 率值,像素的强度值是复数并且对应正弦波的振幅。可以参考傅立叶变换( Fourier Transform )、离散傅立叶变换( Discrete Fourier Transform )和快速傅里叶变换( Fast Fourier Transform )。
我们只提供单独的一个图像名称作为此选项的输出。然而,输出结果实际上将有两个组成部分。它可以是一张包含两帧的图像或者两张单独的图像,这将根据指定的 图像格式是否支持多帧图像来决定。我们最终得到两个输出结果的原因是由于图像的频域使用了复数来表示,而它不能直接用于显示。因此,其中的复数就被自动分 成两个部分,用两张图像来代表。我们得到的第一部分是复数的幅度,第二部分是复数的相位。更详细信息请参看 Complex Numbers
另外,生成的两张幅度和相位分量的图像,必须指定为不限制颜色并且不进行压缩的图像格式。因此,推荐使用的图像格式主要包括MIFF、TIF、PFM、EXR和PNG等。所有这些图像格式,除了PNG格式之外,其它的都支持多帧图像。因此例如
convert image.png -fft fft_image.miff
将会产生一张振幅图像名为“fft_image.miff[0]”和一张相位图像名为“fft_image.miff[1]”。同样的
convert image.png -fft fft_image.png
将会产生一张振幅图像名为“fft_image-0.png”和一张相位图像名为“fft_image-1.png”。如果你喜欢这种表示方法,那么你也可以强制其它任何格式产生两个输出图像,通过在命令行中的-fft选项之后添加+adjoin选项。
输入图像可以是任意尺寸的,但如果不是正方形或者尺寸不为偶数,它就会自动将输入图像的宽度或高度变大,把尺寸像素填充为偶数,而且将从输入图像的底部和 (或)右侧进行填充。操作结束后输出的幅度和相位图像仍然是这个尺寸的正方形。这种方式的填充操作依赖于虚拟像素(-virtual-pixel)设置。
两个输出组件的动态范围都将匹配[0,QuantumRange],因此不需要启用HDRI设置。相位值在名义上的范围是从0到2*π,但是对于非 HDRI汇编的ImageMagick,图像的相位将进行缩放,以覆盖整个动态范围。幅度图像没有进行调整,因此一般会包含有非常小的值。所以图像通常会 完全呈现为黑色。为了看到其中的细节,幅度图像通常被使用log函数进行增强,变为我们所说的频谱。log函数通常用来增强图像颜色,并且较深的值比较浅 的值增强得多。这写都是可以实现的,例如下面:
convert fft_image.miff[0] -contrast-stretch 0 \
-evaluate log 1000 fft_image_spectrum.png
首先,“-contrast-stretch 0”命令用来将图像缩放到整个动态范围。而“-evaluate log”命令中指定的参数通常在100到10000之间,这要取决于你希望在频谱中显示信息的量是多大了。较大的值会产生更加明显的细节。但是,过多的细 节也可能隐藏图像的重要特征。
FFTW 库被要求使用-fft。
使用+fft选项可以产生两个输出图像,分别是傅立叶变换得到的复数的实部和虚部。
但是,由于复数的实部和虚部中可能包含负值,这就需要IM在配置中启用HDRI了。在这种情况下,你就必须使用MIFF、TIF或PFM来显示实部和虚部的结果,因为这些格式可以保留负数和分数值而无需进行裁剪或截断小数部分。
+fft选项生成的实部和虚部的图像也是正方形的,甚至需要和上面讨论的幅度和相位分量图像一样进行相同的尺寸填充,。
参考关于ImageMagick中HDRI实现的讨论页面 High Dynamic-Range Images 。有关HDRI的详细信息请参考ImageMagick的 Usage 页或维基百科条目 Wikipedia
 
-fill  color
设置填充图形时使用的颜色。
此选项可以设定一个颜色名字、十六进制颜色或RGB、RGBA、HSL、HSLA、CMYK或CMYKA规范的数字。如何正确地指定颜色参数请参阅 Color Names
将颜色规范括在引号中,以防止“#”或者括号被你的shell错误的解释。
例如,
-fill blue
-fill "#ddddff"
-fill "rgb(255,255,255)"
参考 -draw 选项获得更多详细信息。
如果要打印完整的颜色名列表,使用“-list color”命令。
 
-filter  type
使用指定类型(type)的滤波器进行图像调整或扭曲。
使用此选项来影响图像的调整操作,例如-resize和-distort操作。你可以使用简单的缩放滤波器,如:
     Point             Hermite             Cubic
     Box                 Gaussian           Catrom
     Triangle       Quadratic         Mitchell
同时还提供了Bessel和Sinc滤波器(以及更快速的SincFast形式)。但是,这些滤波器通常是无用的,因为它们是无限冲击响应裁剪到滤波器支持的大小。不建议直接使用它们,除非进行专业的设置(见下文)。
通常这些特殊的滤波器会被-filter选项定义的窗口函数进行加窗操作。也就是说,使用这些滤波器应该定义一个适合该选项的窗口函数。窗口滤波器包括:
     Lanczos             Hamming             Parzen
     Blackman           Kaiser               Welsh
     Hanning             Bartlett           Bohman
还提供了另一个特殊的自加窗滤波器“Lagrange”,它将根据当前的“support”和“lobes”高级设置自动重新调整其函数。
如果你不设置此选项,将对色图、透明通道的图像或放大的图像默认使用“Mitchell”滤波器,否则默认使用“Lanczos”滤波器。
要打印缩放滤波器的完整列表,请使用“-list filter”选项。
你可以通过使用专业设置来在进行图像缩放时修改滤波器的过滤参数(见-define和-set):
-define filter:blur=factor
缩放滤波器的x轴(和其窗口)。使用>1.0的值进行模糊或<1.0的值进行锐化。它只能用于高斯(Gaussian)或类高斯滤波器,否则你可能无法得到预期的结果。
-define filter:support=radius
设置滤波器的支持半径。定义滤波器的半径大小,将直接影响滤波器重采样过程的速度快慢。所有滤波器都有一个默认最佳半径。部分滤波器如 “Lagrange”和加窗滤波器将根据这个值调整自己。使用简单的滤波器,这个值要么什么也不做(但重采样速度变慢),要么使用有损方式修剪滤波函数。
-define filter:lobes=count
设置Sinc/Bessel滤波器的旁瓣数量。这指定滤波器的“support”范围的可选方法,并且设计上更适合加窗滤波器,尤其进行图像扭曲操作时。
-define filter:b=b-spline_factor
-define filter:c=keys_alpha_factor
重新定义立方滤波器的值,如Cubic、Catrom、Mitchel、Hermite以及Parzen、Sinc等开窗函数。如果只定义了一个值,其它 的将被设置,以生成一个“Keys”类型的立方滤波器。其中值的含义是根据Mitchell-Netravali的一份研究报告定义的。
-define filter:filter=filter_function
直接使用此函数作为缩放滤波器。这将允许你直接使用开窗滤波器“Blackman”,而不是正常用法中使用的“Sinc”或“Bessel”开窗函数。如果定义了,就不会使用开窗函数,除非以下的专业设置也被定义了。
-define filter:window=filter_function
IIR(无限脉冲响应)滤波器Bessel和Sinc将使用给定的滤波器进行加窗操作(从0到定义的support范围)。这让你可以指定一个通常不用作开窗函数的滤波器,比如使用Box(可以有效地关闭开窗函数)对Sinc进行加窗操作,或以前定义的函数。
-define filter:verbose=1
这将导致IM在标准输出中打印选择的内部滤波器信息。这包括正在使用的滤波器设置中的评论头和数据。
但是请注意,有些滤波器在内部是根据其它滤波器进行定义的。例如Lanczos滤波器就是根据加窗SincFast滤波器定义的,而Mitchell滤波器则定义为特定的“B”和“C”设置的Cubic滤波器。
例如,8个旁瓣的Bessel滤波器:
convert image.png -filter bessel \
-set filter:window=bessel -set filter:lobes=8 \
-resize 150% image.jpg
或者4个旁瓣的未加窗Sinc滤波器:
convert image.png -set filter:filter=sinc -set filter:lobes=4 \
-resize 150% image.jpg
请注意,专业选项(除了“blur”和“verbose”),主要提供给研究和理解缩放滤波器工作原理的专家使用。如果没有这方面的知识,或不了解所涉及的滤波器定义,使用专业设置很可能会对你的图片缩放造成损害。
 
-flatten
这是-layers选项中“flatten”方法的一个简单别名。
 
-flip
创建一张镜像图像。
在垂直方向上反映扫描线。图像将被上下颠倒。
 
-floodfill { +- } x { +- } ycolor
在指定的偏移量处用颜色对图像进行替换填充(floodfill)。
替换填充将从给定的“种子点”开始,它不受gravity的影响。当任何颜色与指定颜色参数的差异在-fuzz色彩距离之内,并且和“种子点”相连接,那么它将会被填充颜色(-fill)替换掉。
请注意,如果“种子点”像素本身的颜色就和指定的颜色不匹配(根据-fuzz),那么将不会采取任何操作。
这个选项的工作方式更像是-opaque选项,而不像普通的floodfill填充一样,直接读取“种子点”的颜色作为匹配色。更详细的信息请看-draw选项的“floodfill”方法。
 
-flop
创建一张镜像图像。
在水平方向上反映扫描线。图像将被左右交换。
 
-font  name
用文字注释图像或创建标签时,设置要使用的字体。
要打印字体的完整列表,请使用“-list font”命令(6.3.6版本前,使用“type”而不是“font”)。
除了上述预定义列表中指定的字体,你也可以从指定的源中指定一个特定的字体。例如Arial.ttf是一个TrueType字体文件,ps:helvetica是一种PostScript字体,而x:fixed是X11字体。
对于影响字体的其它设置,可以参考-family、-stretch、-style和-weight选项。
 
-foreground  color
定义前景色。
采用-fill选项下描述的颜色格式。
默认的前景色是黑色。
 
-format  type
图像格式类型。
当与mogrify一起使用时,此选项将会把任何图像转换为你指定的图像格式。 ImageMagick中支持的图像格式类型列表,请使用“-list format”命令查询。
默认情况下,该文件仍然保持其原来的名字。但是,如果文件的扩展名匹配支持的格式,那么扩展名将被-format指定的图像格式类型取代。例如,如果指定为TIFF格式类型并且输入图像的文件名是image.gif,则输出图像的文件名变为image.tiff。
 
-format  string
输出格式化的图像属性。[ identify ]
 
-frame  geometry
给图像添加环绕边框或斜面边框。
边框的颜色使用命令行选项-mattecolor来指定。
参考-geometry选项获得完整细节。geometry参数的size部分表示添加到图像中的额外的宽度和高度。如果geometry参数中没有设置 偏移量,那么添加的边框就是纯色的。如果设置了x和y偏移,就会在边框的宽度和高度部分,形成具有厚度的x像素的外斜面和y像素的内斜面。而负的偏移量则 没有意义。
-frame选项其实受到当前的-compose设置的影响,并且假设这是使用默认的“Over”合并方法。它采用-bordercolor设置生成一张 尺寸合适的图像,然后绘制了四种不同的接近当前-mattecolor设置的颜色。原始图像将会覆盖到这张边框图像的中央。这意味着,使用默认的 “Over”合并方法可以将任何透明部分替换为当前的-bordercolor设置。
图像合并操作不受-gravity选项影响。
 
-frame
在导入的图像中包括X window的边框。[ import ]
 
-function  functionparameters
对通道值应用函数。
此运算选项根据给定的参数进行计算,会修改图像中每个先前设置的通道中的每个颜色值。关于如何处理计算结果的详细信息,请参阅-evaluate。
这可以被认为是-evaluate选项的多参数版本。(在ImageMagick v6.4.8-8版本中加入的)。
parameters参数是一个逗号分隔的数值列表。值的数量取决于function选择的功能。功能包括:
Polynomial(多项式)
     Sinusoid(正弦)
     Arcsin(反正弦)
     Arctan(反正切)
要打印function的完整列表,使用“-list function”命令。说明如下。
Polynomial(多项式)
多项式函数接受任意数量的参数,这些多项式的系数将采用降序排列。也就是说
-function Polynomial  an , an -1 ,... a 1 , a 0
将调用一个多项式函数
anun  +  an -1 u n -1  + ···  a 1 u  +  a 0 ,
其中u是像素的原始归一化通道值。
这个Polynomial函数可以用来代替-evaluate选项的Set(常数多项式)、Add、Divide、Multiply和Subtract(一些线性多项式)方法。-level选项同样对通道产生线性影响。遵循的规则如下。
-evaluate Set value -function Polynomial value (常数函数;设置value×100% gray当通道为RGB时)
-evaluate Add value -function Polynomial 1,value  
-evaluate Subtractvalue -function Polynomial 1,−value  
-evaluate Multiplyvalue -function Polynomialvalue,0  
+level black% x white% -function Polynomial A,B (降低对比度。A=(white-black)/100 and B=black/100)
多项式函数提供了很好的通用性,因为多项式可以设置为任何所需的精确度,以适应任何连续的曲线。
Sinusoid(正弦)
正弦函数可以用来对不同的通道值进行正弦变换,通过设置频率(frequency)、相位(phase)、振幅(amplitude)和偏置(bias)。这些值由下面4个参数决定:
-function  Sinusoid freq ,[ phase ,[ amp ,[ bias ]]]
其中相位的单位为度数(该函数[0,1]的范围对应0到对应 freq ×360度)。其结果就是,如果一个像素的归一化通道值为u,它产生的归一化值由下式决定:
amp  * sin(2*π* ( freq  *  u  +  phase  / 360)) +  bias
例如,下面生成一个曲线开始和结束都是0.9(当u分别为0和1),振荡三次,振动范围为0.7-0.2=0.5和0.7+0.2=0.9之间。
-function Sinusoid 3,-90,.2,.7
振幅和偏置的默认值均为0.5。相位的默认值是0。
正弦函数产生的正弦和余弦可以通过使用-evaluate选项设置不同的振幅、相位和偏置来实现。对应如下。
-evaluate Sin freq -function Sinusoid freq,0
-evaluate Cos freq -function Sinusoid freq,90
ArcSin(反正弦)
ArcSin功能将产生正弦波的逆曲线,可以用来生成扭曲的圆柱和位移的地图。曲线可以通过设置输入值和输出值范围进行调整。
-function  ArcSin width ,[ center ,[ range ,[ bias ]]]
所有设定值都应该是归一化的颜色值(0.0为黑色,1.0为白色)。
range /π * asin( 2/ width  * (  u  -  center  ) ) +  bias
ArcTan(反正切)
反正切函数会生成一条曲线,从有限值延伸到无穷大,虽然中心使用了给定的斜率。所有这些值都可以通过参数进行调整。
-function  ArcTan slope ,[ center ,[ range ,[ bias ]]]
默认为“1.0,0.5,1.0,0.5”。
range /π * atan(  slope *π * (  u  -  center  ) ) +  bias
 
-fuzz  distance { % }
在这个距离范围内的颜色都被认为是相等的。
许多搜索目标颜色的算法。默认情况下,颜色必须是精确的。使用此选项可以匹配在RGB颜色空间中接近目标色的颜色。例如,如果你使用-trim选项自动修剪图像边缘,但是扫描图像的目标背景颜色之间可能会有细微的差异。此选项就可以消除这些差异。
distance参数可以是绝对的强度单位,或通过追加“%”作为最大强度(255、65535或4294967295)的百分比。
 
-fx expression
对图像或图像通道应用数学表达式。
如果expression的第一个字符是“@”,那么表示从紧接着的字符串为文件名的文件中读取表达式。
参看-fx选项的使用介绍获得更详细的信息。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐