⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/command-line-options/)

下面是 ImageMagick 命令行工具所识别的命令行选项列表。如果你想了解某个特定选项的说明,请点击上方导航栏中的选项名称,即可直接跳转到该处。除非另有说明,下列命令均可识别每个选项:magickmogrify

-adaptive-blur radius[xsigma]

自适应地模糊像素,越靠近边缘效果越弱。

使用给定半径和标准差(sigma)的高斯算子。如果未给出 sigma,则默认为 1。

sigma 值是重要的参数,它决定了实际产生的模糊量。

半径仅用于确定保存所计算的高斯分布的数组大小。它应为整数。如果未给出或设为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

-adaptive-resize geometry

使用依赖于数据的三角剖分调整图像尺寸。

关于 geometry 参数的完整细节,请参阅 Image Geometry。-adaptive-resize 选项默认使用依赖于数据的三角剖分。使用 -filter 可选择不同的重采样算法。geometry 字符串中如果存在偏移量,将被忽略,且 -gravity 选项不起作用。

-adaptive-sharpen radius[xsigma]

自适应地锐化像素,越靠近边缘效果越强。

使用给定半径和标准差(sigma)的高斯算子。如果未给出 sigma,则默认为 1。

sigma 值是重要的参数,它决定了实际产生的模糊量。

半径仅用于确定保存所计算的高斯分布的数组大小。它应为整数。如果未给出或设为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

-adjoin

将多幅图像合并为单个多图像文件。

此选项默认启用。会尝试将图像序列中的所有图像保存到给定的输出文件中。然而,某些格式(例如 JPEG 和 PNG)不支持每个文件包含多于一幅图像,在这种情况下 ImageMagick 被迫将每幅图像写为单独的文件。因此,如果需要写入多幅图像,给定的文件名会通过在后缀之前添加 -scene 编号来修改,以便为每幅图像生成不同的名称。

使用 +adjoin 可强制将每幅图像写入单独的文件,无论文件格式是否允许每个文件包含多幅图像(例如 GIF、MIFF 和 TIFF)。

在输出文件名中包含 C 风格的整数格式字符串将自动启用 +adjoin,并用于指定 -scene 编号在文件名中的放置位置。这些字符串,例如 '%d' 或 '%03d',对于使用过标准 printf()' C 库函数的人来说很熟悉。例如,命令

magick logo: rose: -morph 15 my%02dmorph.jpg

将创建一个由 17 幅图像组成的序列(给定的两幅加上 -morph 创建的另外 15 幅),命名为:my00morph.jpg、my01morph.jpg、my02morph.jpg、……、my16morph.jpg。

总之,ImageMagick 会尝试将所有图像写入一个文件,但在以下任一条件存在时会保存到多个文件……

  1. 输出图像的文件格式不允许多图像文件,
  2. 给出了 +adjoin 选项,或
  3. 输出文件名中存在 printf() 整数格式字符串(例如:"%d")。

-affine sx,rx,ry,sy[,tx,ty]

设置用于组合旋转和缩放的绘图变换矩阵。

此选项设置一个变换矩阵,供后续的 -draw 或 -transform 选项使用。

矩阵项以逗号分隔的数值形式输入,可以加引号或不带空格。

在内部,变换矩阵有 3x3 个元素,但其中三个因为是常量而从输入中省略。原始图像中位于 (x, y) 位置的像素的新(变换后)坐标 (x', y') 使用以下矩阵方程计算。

affine transformation

所得图像的尺寸为包含变换后源图像的最小矩形的尺寸。参数 tx 和 ty 随后平移图像像素,使得移出图像区域的像素被裁掉。

变换矩阵遵循左手像素坐标系:正 x 和 y 方向分别为向右和向下;正旋转为顺时针。

如果省略平移系数 tx 和 ty,则默认为 0,0。因此,对于不带平移的旋转和缩放,四个参数即可。

在 x 和 y 方向上分别按因子 sx 和 sy 进行缩放,可通过以下方式完成。

请参阅 -transform,以及 -distort 方法 'Affineprojection 以了解更多信息

-affine sx,0,0,sy

按位移 (tx, ty) 进行平移可如下完成:

-affine 1,0,0,1,tx,ty

绕原点(左上角)按角度 a 顺时针旋转,可令 c = cos(a)、s = sin(a),并使用以下方式。

-affine c,s,-s,c

一系列 -affine 变换的累积效果可以改为通过单个 -affine 操作来完成,该操作使用的矩阵等于各个变换矩阵的乘积。

会尝试检测接近奇异的变换矩阵。如果矩阵行列式的绝对值足够小,则会被拒绝。

-alpha type

控制图像的 alpha/遮罩通道。

用于在图像上设置一个标志,指示是否使用现有的 alpha 通道数据、创建 alpha 通道,或对 alpha 通道执行其他操作。从下面的列表中选择参数 type。

activate
启用图像的透明度通道。注意,通常应改用 Set,除非你特别需要保留现有的(但被明确关闭的)透明度通道。
associate
将 alpha 通道与图像关联。
background
将任何完全透明的像素设为背景色,同时保持其完全透明。这可使某些图像文件格式(例如 PNG)更小,因为透明像素的 RGB 值更加一致,从而可以更好地压缩。
copy
“开启” alpha/遮罩通道,然后将图像的灰度强度复制到 alpha 通道中,将灰度遮罩转换为可适当着色的透明形状遮罩。颜色通道不会被修改。
deactivate
禁用图像的透明度通道。不会删除或更改现有数据,只是关闭对该数据的使用。
disassociate
将 alpha 通道与图像解除关联。
extract
将 alpha 通道值复制到所有颜色通道中,并“关闭”图像的透明度,从而生成图像形状的灰度遮罩。alpha 通道数据保持完整,只是被停用。这是 'Copy' 的逆操作。
off
禁用 alpha 通道。
off-if-opaque
当且仅当 alpha 通道完全不透明时禁用它。
on
启用 alpha 通道。
opaque
启用 alpha/遮罩通道并强制其完全不透明。
remove
将图像合成到背景色之上。
set
激活 alpha/遮罩通道。如果之前被关闭,则还会将通道重置为不透明。如果图像已经开启了 alpha 通道,则不起作用。
shape
与 'Copy' 相同,但还会用当前背景色为所得的形状遮罩着色。也就是说,RGB 颜色通道被替换,并带有适当的 alpha 形状。
transparent
激活 alpha/遮罩通道并强制其完全透明。这实际上创建了一幅与原图大小相同的完全透明图像,其所有原始 RGB 数据仍保持完整,但完全透明。

注意,虽然已废弃的 +matte 操作与 "-alpha Off" 相同,但 >-matte 操作与 "-alpha Set" 相同,而不是 "-alpha On"。

-annotate degrees text

-annotate XdegreesxYdegrees text
-annotate XdegreesxYdegrees{+-}tx{+-}ty text
-annotate {+-}tx{+-}ty text

用文本注释图像

这是一种用文本注释图像的便捷方式。要对文本注释进行更精确的控制,请使用 -draw。

值 Xdegrees 和 Ydegrees 控制应用于文本的错切,而 tx 和 ty 是偏移量,给出文本相对于任何 -gravity 设置的位置,默认为图像的左上角。

使用 -annotate degrees 或 -annotate degreesxdegrees 产生文本的无错切旋转。旋转方向为正,这意味着当 degrees 为正时为顺时针旋转。(一旦认识到对于图像来说正 y 方向按惯例被视为向下,这便符合通常的数学惯例。)

图像中位于 (x, y) 位置的像素的新(变换后)坐标 (x', y') 使用以下矩阵方程计算。

annotate transformation

如果省略 tx 和 ty,则默认为 0。这会使文本的左下角成为图像的左上角,这大概不是想要的。在这种情况下添加 -gravity 选项会带来不错的结果。

text 是任何 UTF-8 编码的字符序列。如果 text 的形式为 '@mytext.txt',则从文件 mytext.txt 中读取文本。文件中的文本按字面处理;不识别任何嵌入的格式化字符。

-antialias

启用/禁用在绘制字体和线条时反锯齿像素的渲染。

默认情况下,对象(例如文本、线条、多边形等)在绘制时会进行反锯齿处理。使用 +antialias 可禁用添加反锯齿边缘像素。这将把添加到图像的颜色数量减少到仅为直接绘制的颜色。也就是说,在绘制此类对象时不会添加混合颜色。

-append

将当前图像垂直或水平合并。

此选项通过按从上到下的顺序合并所有当前图像,创建一幅更长的单幅图像。使用 +append 可从左到右堆叠图像。

如果它们的宽度不同,较窄的图像将用当前的 -background 颜色设置进行填充,并且它们彼此之间的相对位置可由当前的 -gravity 设置来控制。

要获得更灵活的选项,包括在图像之间添加间隔的能力,请使用 -smush。

-attenuate value

在向图像添加噪点时减弱(或增强)。

如果未设置,该值等于 1.0,即最大噪点添加量。

-authenticate password

用密码解密 PDF。

使用此选项为解密使用 Microsoft Crypto API(MSC API)加密的 PDF 提供密码。不支持使用 MSC API 进行加密。

对于不同的加密方法,请参阅 -encipher 和 -decipher。

-auto-gamma

自动调整图像的 gamma 级别。

这会计算图像的平均值,然后应用经计算的 -gamma 调整,使图像中的平均颜色得到 50% 的值。

这意味着任何纯“灰色”图像都会变为 50% 灰色。

这对于几乎没有极暗和极亮区域的真实生活图像效果很好,但对于含有大量明亮天空或深暗阴影的图像往往会失败。它对图表或卡通类图像也效果不佳。

它使用 -channel 设置(包括用于通道同步的 'sync' 标志)来确定使用和修改哪些颜色值。由于默认的 -channel 设置为 'RGB,sync',各通道按相同的 gamma 值一起被修改,从而保留颜色。

-auto-level

自动调整图像的颜色级别。

这是一个“完美的”图像归一化算子。它找到图像中确切的最小和最大颜色值,然后应用 -level 算子将这些值拉伸到完整的值域范围。

该算子通常不用于真实生活图像、图像扫描件或 JPEG 格式图像,因为单个“离群”像素就可能为 -level 操作设定一个糟糕的最小/最大值。另一方面,它是用于颜色拉伸渐变图像的正确算子,这些渐变图像被用来生成色彩查找表、畸变映射或其他“数学上”定义的图像。

该算子与 -normalize、-contrast-stretch 和 -linear-stretch 算子非常相似,但没有这些算子可能存在的“直方图分箱”或“裁剪”问题。也就是说,-auto-level 是这些算子的完美或理想版本。

它使用 -channel 设置(包括特殊的 'sync' 标志用于通道同步)来确定使用和修改哪些颜色值。由于默认的 +channel 设置为 'RGB,sync','sync' 确保颜色通道将按相同的 gamma 值一起被修改,从而保留颜色,并忽略透明度。

-auto-orient

调整图像,使其方向适于查看(即左上方向)。

此算子读取并重置 EXIF 图像配置文件中的 'Orientation' 设置,然后对图像执行相应的 90 度旋转以确定图像方向,从而正确查看。

此 EXIF 配置文件设置通常使用数码相机中的重力传感器来设定,然而直接向下或向上拍摄的照片可能没有合适的值。此外,已被“校正”方向但未重置此设置的图像,可能会被再次“校正”,从而导致不正确的结果。如果之前已剥离 EXIF 配置文件,则 -auto-orient 算子将不起作用。

-auto-threshold method

自动执行图像阈值化。

以下是有效的方法:

Undefined
0:未指定方法(等同于 'OTSU')。
Kapur
最大熵阈值化。
OTSU
基于聚类的图像阈值化。
Triangle
一种几何阈值化方法。

计算出的阈值作为 auto-threshold:verbose 图像属性返回。若要改为打印到你的设备,请使用 -define auto-threshold:verbose=true。

-average

对一组图像求平均。

如果图像尺寸不完全相同,则会产生错误。

-backdrop

将图像居中显示在背景幕布上。

此背景幕布覆盖整个工作站屏幕,在查看图像时有助于隐藏其他 X 窗口活动。背景幕布的颜色指定为背景色。颜色使用 -fill 选项下描述的格式来指定。

-background color

设置背景色。

颜色使用 -fill 选项下描述的格式来指定。默认背景色(如果未指定或在图像中未找到)为白色。

-bench iterations

测量性能。

按给定的迭代次数重复执行整个命令,并报告用户时间和实际经过时间。例如,请看以下命令及其输出。可使用 -duration 修改基准测试,使其运行固定的秒数;使用 -concurrent 并行运行基准测试(需要 OpenMP 特性)。

$ magick logo: -resize 200% -bench 5 logo.png
Performance[1]: 5i 1.344ips 1.000e 3.710u 0:03.720
Performance[2]: 5i 1.634ips 0.549e 3.890u 0:03.060
Performance[3]: 5i 2.174ips 0.618e 3.190u 0:02.300
Performance[4]: 5i 1.678ips 0.555e 3.810u 0:02.980
Performance[4]: 5i 0.875657ips 6.880u 0:05.710

在此示例中,完成了 5 次迭代,速度为每秒 2.174 次迭代,使用了 3 个线程及 3.190 秒的用户分配时间,总经过时间为 2.300 秒。

-bias value{%}

在卷积图像时添加偏置。

此选项会移动 -convolve 的输出,使正负结果相对于指定的偏置值。

对于处理同时包含负值和正值的卷积时,这对于 ImageMagick 的非 HDRI 编译版本很重要。尤其是涉及高通滤波器或边缘检测的卷积更是如此。如果没有输出偏置,负值会被裁剪为零。

当使用启用了 HDRI 编译时设置的 ImageMagick 时,不需要 -bias,因为 ImageMagick 能够存储/处理任何负结果,而不会裁剪到颜色值范围(0..QuantumRange)。

请参阅 High Dynamic-Range Images 页面上关于 ImageMagick HDRI 实现的讨论。有关 HDRI 的更多信息,请访问 ImageMagick 的 Usage 页面或此 Wikipedia 条目。

-bilateral-blur width{xheight}{+intensity-sigma}{+spatial-sigma}

一种用于图像的非线性、保边且降噪的平滑滤波器。它用附近像素强度值的加权平均值替换每个像素的强度。该权重基于高斯分布。权重不仅取决于像素的欧几里得距离,还取决于辐射差异(例如范围差异,如色彩强度、深度距离等)。这样可以保留锐利的边缘。

强度 sigma 处于强度空间中。较大的值意味着像素邻域内(参见 spatial-sigma)较远的颜色会被混合在一起,从而产生更大面积的近似同色区域。

空间 sigma 处于坐标空间中。较大的值意味着只要颜色足够接近(参见 intensity-sigma),较远的像素也会相互影响。当邻域直径大于零时,它指定邻域大小,与 spatial-sigma 无关。否则,邻域直径与 spatial-sigma 成正比。

强度和空间 sigma 的默认值分别为 0.75diameter 和 0.25diameter。

-black-point-compensation

使用黑点补偿。

-black-threshold value{%}

将低于阈值的所有像素强制变为黑色,而保持处于或高于阈值的所有像素不变。

阈值可以以百分比形式给出,也可以以 [0, QuantumRange] 范围内对应所需通道值的绝对整数形式给出。有关阈值及其结果值的更多详情,请参阅 -threshold。

-blend geometry

按给定的绝对值或百分比将一幅图像混合到另一幅图像中。

混合会根据给定的百分比和每个像素的透明度,将图像平均('plus')在一起。如果只给出单个百分比值,则它设置合成图像或“源”图像的权重,而背景图像则按完全相反的量加权。也就是说,-blend 30% 将“源”图像的 30% 与“目标”图像的 70% 合并。因此它等同于 -blend 30x70%。

-blue-primary x,y

设置蓝色色度基准点。

-blue-shift factor

模拟月光下的夜间场景。从 1.5 的系数开始。

-blur radius

-blur radius{xsigma}

降低图像噪点并减少细节层次。

使用给定的 Sigma 值,以高斯分布或正态分布对图像进行卷积。公式为:

gaussian distribution

sigma 值是重要的参数,它决定了实际产生的模糊量。

radius 仅用于确定保存所计算高斯分布的数组大小。它应为整数。如果未给出或设为零,IM 将计算可为高斯分布提供有意义结果的最大可能半径。

半径越大,操作越慢。然而,半径太小可能会导致严重的混叠效应。作为指导原则,半径应至少为 Sigma 值的两倍,不过三倍会产生更精确的结果。

此选项与 -gaussian-blur 的区别仅在于它利用了分布的可分离性。这里我们先在水平方向应用一维高斯矩阵,然后在垂直方向重复该过程。

-virtual-pixel 设置将决定图像本体之外的像素如何被模糊进最终结果中。

-border geometry

用某种颜色的边框环绕图像。

使用 geometry 参数的尺寸部分设置宽度和高度。有关 geometry 参数的完整详情,请参阅 Image Geometry。偏移量会被忽略。

自 IM 6.7.8-8 起,geometry 参数的行为如下:

value
value 同时加到左/右和上/下
value-xx
value-x 仅加到左/右,上/下保持不变
xvalue-y
value-y 仅加到上/下,左/右保持不变
value-xxvalue-y
value-x 加到左/右,value-y 加到上/下
value-xx0
value-x 仅加到左/右,上/下保持不变
0xvalue-y
value-y 仅加到上/下,左/右保持不变
value%
宽度的 value % 加到左/右,高度的 value % 加到上/下
value-xx%
宽度的 value-x % 加到左/右和上/下
xvalue-y%
高度的 value-y % 加到上/下和左/右
value-x%xvalue-y%
宽度的 value-x % 加到左/右,高度的 value-y % 加到上/下
value-x%x0%
宽度的 value-x % 加到左/右,上/下保持不变
0%xvalue-y%
高度的 value-y % 加到上/下,左/右保持不变

通过在前面加上 -bordercolor 设置来设定边框颜色。

-border 操作会受到当前 -compose 设置的影响,并假定使用默认的 'Over' 合成方法。它会先用当前 -bordercolor 生成适当尺寸的彩色图像,然后将原图叠加在该新图像的中央。这意味着在默认的 'Over' 合成方法下,任何透明部分都可能被当前 -bordercolor 设置替换。

另请参阅 -frame 选项,它具有更多功能。

-bordercolor color

设置边框颜色。

颜色使用 -fill 选项下所述的格式指定。

默认边框颜色为 #DFDFDF,即这种灰色调。

-borderwidth geometry

设置边框宽度。

-brightness-contrast brightness

-brightness-contrast brightness{xcontrast}{%}

调整图像的亮度和/或对比度。

亮度和对比度值会对输入图像施加变化。它们不是绝对设置。亮度或对比度值为零表示不变。每项的取值范围为 -100 至 +100。正值增加亮度或对比度,负值降低亮度或对比度。若只想控制对比度,请设置 brightness=0。若只想控制亮度,请设置 contrast=0 或直接省略它。

你还可以使用 -channel 来控制对哪些通道施加亮度和/或对比度变化。默认是对所有通道施加相同的变换。

亮度和对比度参数会被转换为线性变换的偏移量和斜率,并使用 -function polynomial "slope,offset" 应用。

斜率从 contrast=-100 时的 0 变化到 contrast=+100 时的近乎垂直。对于 brightness=0 和 contrast=-100,结果完全是中灰色。对于 brightness=0 和 contrast=+100,结果将接近但不完全达到中灰处的阈值;也就是说线性变换是中灰处一条非常陡峭的垂直线。

此函数无法实现负斜率,即对图像取反。所有可达到的斜率都为零或正值。

偏移量从 brightness=-100 时的 -0.5 变化到 brightness=0 时的 0,再到 brightness=+100 时的 +0.5。因此,当 contrast=0 且 brightness=100 时,结果完全为白色。同样,当 contrast=0 且 brightness=-100 时,结果完全为黑色。

由于参数的取值范围为 -100 至 +100,添加 '%' 符号与省略它没有区别。

-cache threshold

(此选项已被 -limit 选项取代。)

-canny radius

-canny radius{xsigma}{+lower-percent}{+upper-percent}

Canny 边缘检测器使用多阶段算法来检测图像中各种各样的边缘。

阈值范围为 0 到 100%(例如 -canny 0x1+10%+30%),其中 {+lower-percent} < {+upper-percent}。如果增大 {+upper-percent} 但 {+lower-percent} 保持不变,则会检测到更少的边缘分量,但其长度相同。如果增大 {+lower-percent} 但 {+upper-percent} 保持不变,则会检测到相同数量的边缘分量,但其长度会更短。显示的是默认阈值。

radius{xsigma} 控制对输入图像应用的高斯模糊,以降噪并平滑边缘。

sigma 值是重要的参数,它决定了实际产生的模糊量。

radius 仅用于确定保存所计算高斯分布的数组大小。它应为整数。如果未给出或设为零,IM 将计算可为高斯分布提供有意义结果的最大可能半径。

-caption string

为图像分配标题。

此选项设置在给定该选项之后读入的图像的 caption 元数据。要修改已在内存中的图像的标题,请使用 "-set caption"。

标题可以包含 Format and Print Image Properties 中列出的特殊格式字符。当标题最终分配给各个图像时,这些属性会被展开。

如果字符串的第一个字符是 @,则图像标题从以字符串其余字符命名的文件中读取。从文件读入的注释是字面文本;不会识别任何嵌入的格式字符。

caption 元数据在图像本身上不可见。要实现可见,请改用 -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"?>
<ColorCorrectionCollection 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>
</ColorCorrectionCollection>

-channel type

指定后续操作所限定作用的图像色彩通道。

可从以下选项中选择:Red、Green、Blue、Alpha、Gray、Cyan、Magenta、Yellow、Black、Opacity、Index、RGB、RGBA、CMYK 或 CMYKA。

上述通道也可以指定为以逗号分隔的列表,或缩写为字母 'R'、'G'、'B'、'A'、'O'、'C'、'M'、'Y'、'K' 的连写形式。

数字 0 到 31 也可用于指定通道,其中 0 到 5 分别为:

'0' 表示 Red 或 Cyan
'1' 表示 Green 或 Magenta
'2' 表示 Blue 或 Yellow
'3' 表示 Black
'4' 表示 Alpha 或 Opacity
'5' 表示 Index

例如,若只想选择 Red 和 Blue 通道,可以使用以下任意一种写法:

-channel Red,Blue
-channel R,B
-channel RB
-channel 0,2

图像中存在的所有通道都可以使用特殊通道类型 All 来指定。并非所有操作符都“支持通道”,但通常任何属于“灰度”图像操作符的操作符都能理解此设置。请参阅各操作符的文档。

在常规通道选择之上,还可以指定一个额外标志 'Sync'。该标志默认开启,若设置,则表示理解此标志的操作符应执行:通道之间的跨通道同步。如果未指定,则大多数灰度操作符会将其图像处理操作完全独立地应用到每个单独的通道(由 -channel 设置的其余部分所指定)。

例如,对于 -auto-level 和 -auto-gamma 等操作符,色彩通道会以完全相同的方式一起被修改,以使颜色保持同步。若未设置该标志,则每个通道会被单独且独立地修改,这可能产生色彩失真。

-morphology 'Convolve' 方法以及 -compose 数学方法同样能理解 'Sync' 标志,可根据 alpha 通道(如果存在)来修改像素颜色的处理行为。也就是说,它会在理解“完全透明的颜色不应对最终结果有贡献”的前提下进行图像处理。

基本上,默认情况下操作符以同步方式处理色彩通道,并将透明度作为特殊情况对待,除非 -channel 设置被修改以去除 'Sync' 标志的效果。每个操作符如何做到这一点取决于该操作符当前的实现。目前并非所有操作符都理解此标志,但情况正在改变。

要打印通道类型的完整列表,请使用 -list channel。

默认情况下,ImageMagick 将 -channel 设为值 'RGBK,sync',这表示操作符作用于除透明度通道外的所有色彩通道,并且所有色彩通道都以完全相同的方式被修改,同时理解透明度(取决于所应用的操作)。“加号”形式 +channel 会将该值重置回此默认值。

受 -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、-rotational-blur、-random-threshold、-range-threshold、-separate、-threshold 以及 -white-threshold。

警告,某些操作符在 +channel 默认设置生效时,与在任何用户定义的 -channel 设置(包括等同于默认值的设置)生效时,行为有所不同。这些操作符尚未被改造为理解较新的 'Sync' 标志。

例如,如果未定义任何 -channel 设置,-threshold 默认会先将图像灰度化再进行阈值处理。这一行为目前还不受 'Sync' 标志控制。

此外,某些操作符如 -blur、-gaussian-blur,如果 'alpha' 通道也通过 -channel 启用,则会改变其对色彩通道的处理方式。通常这样做是为了确保完全透明的颜色被视为完全透明,从而使任何底层“隐藏”颜色对最终结果没有影响。这通常会产生“光晕”效果。然而,较新的 -morphology 卷积等价操作确实理解 'Sync' 标志,因此默认会正确处理透明度。

由于 alpha 通道在图像中是可选的,当图像没有 alpha 通道,而 -channel 设置又告诉操作符使用 alpha 通道来执行操作时,某些操作符会将图像的色彩通道作为灰度 alpha 遮罩来读取。-clut 操作符就是一个很好的例子。

-channel-fx expression

交换、提取或复制一个或多个图像通道。

该表达式由一个或多个通道组成,通道可以是助记符或数字(例如 red 或 0、green 或 1 等),并通过特定的运算符号分隔,如下所示:

<=>  交换两个通道(例如 red<=>blue)
=>   将一个通道复制到另一个通道(例如 red=>green)
=    为通道赋一个常量值(例如 red=50%)
,    以指定顺序写出包含这些通道的新图像(例如 red, green)
;    为下一组通道操作添加一个新的输出图像(例如 red; green; blue)
|    转到下一个输入图像作为通道数据的来源(例如 | gray=>alpha)

例如,要从图像的 red、green 和 blue 通道创建 3 个灰度图像,请使用:

-channel-fx "red; green; blue"

不带运算符号的通道意味着分离(即分号)。

下面,我们取一个 sRGB 图像和一个灰度图像,并将灰度图像注入到 alpha 通道中:

magick wizard.png mask.pgm -channel-fx '| gray=>alpha' wizard-alpha.png

使用类似的命令来定义读取遮罩:

magick wizard.png mask.pgm -channel-fx '| gray=>read-mask' wizard-mask.png

在此示例中,我们计算图像所有不透明像素的平均 RGB 值:

magick wizard-alpha.png -channel-fx "alpha=>read-mask" -channel rgb -format "%[fx:mean]\n" info:

让我们创建两个元通道,并用灰度像素的副本填充它们:

magick gray.pgm -channel-fx "gray=>meta, gray=>meta1" gray.tif

请注意,我们将结果保存为 TIFF 图像文件。并非所有格式都支持多光谱图像。TIFF、MIFF、MPC 和 FTXT 支持。

在 -channel-fx 选项之前添加 -debug pixel,可跟踪通道的变换过程。

-charcoal factor

模拟炭笔画。

-chop geometry

从图像内部移除像素。

有关 geometry 参数的完整细节,请参阅 图像几何。geometry 参数尺寸部分给出的宽度和高度指定要移除的列数和行数。geometry 参数的偏移部分会受到 -gravity 设置(如果存在)的影响。

-chop 选项会移除整行和整列,并将剩余的角块向左和向上移动以填补空隙。

虽然它可以移除图像内部的行和列,但更常见的用法是配合 -gravity 设置和零偏移,以便从图像中移除单个边缘。可将其与 -shave 比较,后者从图像的相对两侧移除相同数量的像素。

使用 -chop 实际上可撤销以相同 geometry 和 -gravity 设置执行的 -splice 的结果。

-clahe widthxheight{%}{+}number-bins{+}clip-limit{!}

对比度受限的自适应直方图均衡化。

图像被划分为宽度和高度为若干像素的图块。追加 % 可将宽度和高度定义为图像尺寸的百分比。图块尺寸应大于要保留的特征尺寸,并遵循图像的纵横比。添加 ! 可强制使用精确的图块宽度和高度。number-bins 是每个图块的直方图区间数(最小 2,最大 65536)。直方图区间数应小于单个图块中的像素数。clip-limit 是局部对比度变化的对比度限制。clip-limit 取 2 到 3 是一个不错的起点(例如 -clahe 50x50%+128+3)。非常大的值会让直方图均衡化随意发挥,即产生最大的局部对比度。值为 1 会得到原始图像。请注意,如果省略区间数和 clip-limit,它们将分别默认为 128 和不裁剪。

-clamp

将值低于零的每个像素设为零,将值高于量子范围的任意像素设为量子范围(例如 65535),否则像素值保持不变。

-clip

如果存在裁剪路径,则应用该裁剪路径。

如果存在裁剪路径,它将应用于后续操作。

例如,在以下命令中

magick cockatoo.tif -clip -negate negated.tif

只有裁剪路径内的像素会被取反。

-clip 功能需要 SVG 支持。如果 SVG 委托库不存在,则该选项会被忽略。

使用 +clip 可对后续操作禁用裁剪。

-clip-mask

按此遮罩定义的方式裁剪图像。

将当前图像的 alpha 通道用作遮罩。任何白色区域都不会被后续的“图像处理操作符”修改,直到该遮罩被移除。裁剪遮罩黑色区域中的像素则会按操作符的要求被修改。

在某些方面,这类似于(但不完全相同于)定义一个矩形 -region,或在三图像 -composite 操作中使用遮罩(第三幅)图像的反相。

使用 +clip-mask 可对后续操作禁用裁剪。

-clip-path id

沿来自 8BIM 配置文件的命名路径进行裁剪。

这与 -clip 相同,只是在图像有多个可用路径的情况下选择特定的裁剪路径。ImageMagick 支持 UTF-8 编码。如果你的命名路径采用不同的编码,请使用 iconv 将裁剪路径名称转换为该编码,否则路径名称将无法匹配。

使用 +clip-path 可对后续操作禁用裁剪。

-clone index(s)

制作一个图像(或多个图像)的克隆。

在括号内(即该操作符通常使用的位置),它会从上一个“压入”的图像序列中克隆图像,并将其添加到当前图像序列的末尾。如果在括号外使用,则会引发错误。

通过图像在序列中的索引来指定图像。第一幅图像的索引为 0\。负索引相对于序列末尾;例如,−1 表示序列的最后一幅图像。用短横线指定图像范围(例如 0−4)。用逗号分隔多个索引但不加空格(例如 0,2,5)。值 '0−−1' 实际上会克隆所有图像。

+clone 只会复制图像序列中的最后一幅图像,因此等同于使用参数 '−1'。

-clut

使用第二幅图像中每个对应通道作为(color lookup table),替换第一幅图像中的通道值。

第二幅(LUT)图像通常是一个渐变图像,包含每个通道应如何修改的直方图映射。它通常是单行或单列的替换颜色值图像。如果大于单行或单列,则从左上角到右下角的对角线上取值。

查找进一步受 -interpolate 设置控制,对于长度不足 ImageMagick 安装的质量(Q)级别所需长度的 LUT 尤其有用。适合的设置是 'bilinear' 和 'catrom'。Catom 可以返回有用的二阶连续性。

此操作符特别适合用 CLUT 图像中的特定颜色渐变来替换灰度图像。

只有由 -channel 设置定义的通道值才会被替换。特别地,由于默认的 -channel 设置为 RGBA,这意味着透明度(alpha/遮罩通道)会受到影响,除非修改 -channel 设置,例如改为 RGB。当未设置 alpha 通道时,-clut 操作符会忽略它。

如果被修改的图像或查找图像不包含透明度(即 -alpha 已“关闭”),但 -channel 设置包含 alpha 替换,则假定该图像表示一个用于替换 alpha 值的灰度渐变。也就是说,你可以使用灰度 CLUT 图像来调整现有图像的 alpha 通道,或者你可以使用包含所需颜色(包括透明度)的 CLUT 中的颜色来为灰度图像着色。

另请参阅 -hald-clut,它根据从 3D 颜色立方体的 2D 表示中查找完整 RGB 颜色值的方式来替换颜色。

-coalesce

完整定义 GIF 动画序列每一帧的外观,以形成“胶片条”动画。

根据每幅图像的 -dispose 元数据叠加图像序列中的每幅图像,以重现动画序列中每个时间点的动画外观。所有图像都应具有相同的尺寸,并被赋予适当的 GIF 处置设置,以便该动画能像 GIF 动画一样按预期继续工作。这类帧比高度优化的 GIF 叠加图像更易于查看和处理。

处理后可使用 -layers 方法 'optimize' 对动画重新优化,不过无法保证恢复后的 GIF 动画优化效果优于原始版本。

-colorize value

使用最近一次 -fill 设置所指定的颜色,按 value 指定的量为图像着色。

将着色量指定为百分比。可以用逗号分隔的着色值列表,对图像的 red、green 和 blue 通道分别应用不同的着色值(例如 -colorize 0,0,50)。

-colormap type

定义色彩映射表(colormap)类型。

type 可以是 shared 或 private。

此选项仅在默认 X 服务器视觉类型为 PseudoColor 或 GrayScale 时适用。更多细节请参阅 -visual。默认情况下会分配一个共享色彩映射表。图像与其他 X 客户端共享颜色。某些图像颜色可能会被近似,因此你的图像看起来可能与预期大相径庭。如果选择 private,图像颜色将完全按照定义显示。然而,当安装该图像的色彩映射表时,其他客户端的颜色可能会失真。

-colors value

设置图像中偏好的颜色数量。

图像中实际的颜色数量可能少于你的请求,但绝不会更多。请注意,这是一个颜色缩减选项。唯一颜色数少于 value 指定值的图像,会被移除任何重复或未使用的颜色。现有调色板的排序可能会被改变。将图像从彩色转换为灰度时,先将图像转换到 gray 色彩空间再缩减颜色数会更高效。更多细节请参阅 颜色缩减算法

-color-matrix matrix

对图像应用色彩校正。

此选项允许进行饱和度更改、色相旋转、亮度转 alpha 以及各种其他效果。虽然可以使用可变大小的变换矩阵,但通常对 RGBA 图像使用 5x5 矩阵,对 CMYKA(或带偏移量的 RGBA)使用 6x6 矩阵。该矩阵与 Adobe Flash 所使用的类似,区别在于 ImageMagick 的偏移量位于第 6 列而非第 5 列(以支持 CMYKA 图像),并且 ImageMagick 的偏移量经过归一化处理(将 Flash 的偏移量除以 255)。

例如,要为带偏移量的图像增加对比度,可尝试以下命令:

magick 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

设置图像的色彩空间。

可选项为:

Adobe98 CIELab DisplayP3 HSL
CAT02LMS CMY CMYK Gray
HCL HCLp HSB HSI
HSV HWB Jzazbz Lab
LCH LCHab LCHuv LinearGray
LMS Log Luv OHTA
Oklab Oklch ProPhoto Rec601YCbCr
Rec709YCbCr RGB scRGB sRGB
Transparent xyY XYZ YCbCr
YDbDr YCC YIQ YPbPr
YUV

要打印色彩空间的完整列表,请使用 -list colorspace。

要更精确地转换到或转换自线性 RGB、CMYK 或灰度色彩空间,请使用 -profile 选项。请注意,如果图像格式未另行说明,ImageMagick 会假定为 sRGB 色彩空间。进行色彩空间转换时,会先移除伽马函数以生成线性 RGB。

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.212656
R+0.715158G+0.072186B
HSB — 色相、饱和度、明度;像一个尖端朝下的圆锥
H=绕周边的角度(0 至 360 度);H=0 为红色;角度增大趋向绿色
S=自轴向外的距离
B=自底部沿轴向上的距离;B=max(R,G,B);类似强度
HSL — 色相、饱和度、亮度;像一个首尾相接的双圆锥,顶端和底端均为尖峰
H=绕周边的角度(0 至 360 度);H=0 为红色;角度增大趋向绿色
S=自轴向外的距离
L=自底部沿轴向上的距离;L=0.5max(R,G,B) + 0.5min(R,G,B);类似强度
HWB — 色相、白度、黑度
Hue(复杂方程)
Whiteness(复杂方程)
Blackness(复杂方程)
LAB
L(与 X,Y,Z 相关的复杂方程)
A(与 X,Y,Z 相关的复杂方程)
B(与 X,Y,Z 相关的复杂方程)
LinearGray
LinearGray = 0.298839R+0.586811G+0.114350B
LOG
I1(涉及 R 的对数的复杂方程)
I2(涉及 G 的对数的复杂方程)
I3(涉及 B 的对数的复杂方程)
OHTA — 近似主成分变换
I1=0.33333
R+0.33334G+0.33333B;类似强度
I2=(0.50000R+0.00000G−0.50000B)(QuantumRange+1)/2
I3=(−0.25000R+0.50000G−0.25000B)(QuantumRange+1)/2
Rec601Luma
Gray = 0.298839R+0.586811G+0.114350B
Rec601YCbCr
Y=0.2988390
R+0.5868110G+0.1143500B;类似强度
Cb=(−0.168736R-0.331264G+0.500000B)(QuantumRange+1)/2
Cr=(0.500000R−0.418688G−0.081312B)(QuantumRange+1)/2
Rec709Luma
Gray=0.212656R+0.715158G+0.072186B
Rec709YCbCr
Y=0.212656
R+0.715158G+0.072186B;类似强度
Cb=(−0.114572R−0.385428G+0.500000B)+(QuantumRange+1)/2
Cr=(0.500000
R−0.454153G−0.045847B)+(QuantumRange+1)/2
sRGB
if R ≤ .0.0031308 then Rs=R/12.92 else Rs=1.055 R ^ (1.0 / 2.4) - 0.055
if G ≤ .0.0031308 then Gs=B/12.92 else Gs=1.055 R ^ (1.0 / 2.4) - 0.055
if B ≤ .0.0031308 then Bs=B/12.92 else Bs=1.055 R ^ (1.0 / 2.4) - 0.055
XYZ
X=0.4124564R+0.3575761G+0.1804375B
Y=0.2126729
R+0.7151522G+0.0721750B
Z=0.0193339R+0.1191920G+0.9503041B
YCC
Y=(0.298839
R+0.586811G+0.114350B)(带复杂的缩放);类似强度
C1=(−0.298839R−0.586811G+0.88600B)(带复杂的缩放)
C2=(0.70100
R−0.586811G−0.114350B)(带复杂的缩放)
YCbCr
Y=0.2988390R+0.5868110G+0.1143500B;类似强度
Cb=(−0.168736
R−0.331264G+0.500000B)(QuantumRange+1)/2
Cr=(0.500000
R−0.418688G−0.081312B)(QuantumRange+1)/2
YIQ
Y=0.298839
R+0.586811G+0.114350B;类似强度
I=(0.59600R−0.27400G−0.32200B)(QuantumRange+1)/2
Q=(0.21100R−0.52300G+0.31200B)(QuantumRange+1)/2
YPbPr
Y=0.2988390R+0.5868110G+0.1143500B;类似强度
Pb=(−0.168736
R−0.331264G+0.500000B)(QuantumRange+1)/2
Pr=(0.500000
R−0.418688G−0.081312B)(QuantumRange+1)/2
YUV
Y=0.298839
R+0.586811G+0.114350B;类似强度
U=(−0.14740R−0.28950G+0.43690B)(QuantumRange+1)/2
V=(0.61500R−0.51500G−0.10000B)(QuantumRange+1)/2

请注意,scRGB 色彩空间需要 HDRI 支持,否则其行为与线性 RGB 完全相同。

使用 Undefined 色彩空间来标识多光谱图像。

-color-threshold start-color-stop-color

返回一幅二值图像,其中指定范围内的所有颜色都被更改为白色。所有其他颜色都被更改为黑色。

-combine

+combine colorspace

将一幅或多幅图像合并为单一图像。

合并后图像的通道(先前由 -channel 设置)按顺序取自序列中每幅图像的灰度值。对于默认的 RGB -channel 设置,这意味着第一幅图像被分配给红色通道,第二幅给绿色通道,第三幅给蓝色通道。

只要通道设置相同,可以将此选项视为 -separate 的逆操作。因此,在以下示例中,最终图像应是原图的副本。

magick 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"。

注释可以包含 图像属性格式化与打印 中列出的特殊格式字符。当注释最终被分配给各个图像时,这些属性会被展开。

如果 string 的第一个字符是 @,则从以该字符串其余字符命名的文件中读取图像注释。从文件读取的注释是字面值;不会识别任何嵌入的格式字符。

注释元数据在图像本身上不可见。要实现可见效果,请改用 -annotate 或 -draw 选项。

例如,

-comment "%m:%f %wx%h"  bird.miff

会生成 MIFF:bird.miff 512x480 的图像注释(假设图像 bird.miff 的宽度为 512、高度为 480)。

-compare

以数学方式和视觉方式标注图像与其重建之间的差异

这是用于两幅相同尺寸图像的 "compare" 的 convert 版本。语法如下,但也允许使用其他度量标准。

magick image.png reference.png -metric RMSE -compare \   
 difference.png

要获取度量值,请使用字符串格式 "%[distortion]"。

magick image.png reference.png -metric RMSE -compare -format \
   "%[distortion]" info:

-complex operator

对图像序列执行复数运算

从以下运算符中选择:

add
conjugate
divide
magnitude-phase
multiply
real-imaginary
subtract

可选择通过 -define complex:snr=float 为 divide 运算符指定 SNR。

-compose operator

设置图像合成的类型。

有关 alpha 合成的详细讨论,请参阅 Alpha 合成

此设置会影响以某种方式将两幅(或多幅)图像合并在一起的图像处理运算符。这包括运算符 -compare、-composite、-layers composite、-flatten、-mosaic、-layers merge、-border、-frame 和 -extent。

它也是 "composite" 命令的主要选项之一。

-composite

对两幅图像及可选的蒙版执行 alpha 合成

取第一幅图像“目标”,并根据当前的 -compose 设置叠加第二幅“源”图像。“源”或“叠加”图像的位置由 -gravity 和 -geometry 设置控制。

如果给出第三幅图像,则将其作为相对于第一幅“目标”图像的灰度混合“蒙版”图像。该蒙版与源图像混合。但对于 'displace' 合成方法,蒙版用于提供单独的 Y 位移图像。

如果某个 -compose 方法需要额外的数值参数或标志,可以通过为该合成方法适当地设置 -set 'option:compose:args' 来提供。

某些 -compose 方法可以修改叠加区域之外的“目标”图像。此功能默认禁用。你可以通过设置 define:-define 'compose:clip-to-self=true' 来启用它。

SVG 合成规范要求颜色和不透明度值的范围在零到 QuantumRange 之间(含两端)。你可以通过此选项允许超出此范围的值:-set 'option:compose:clamp=false

-compress type

写入图像时使用 type 指定的像素压缩。

可选项为:None、BZip、Fax、Group4、JPEG、JPEG2000、Lossless、LZW、RLE 或 Zip。

要打印压缩类型的完整列表,请使用 -list compress。

指定 +compress 以未压缩格式存储二值图像。默认值为所指定图像文件的压缩类型。

如果指定了 LZW 压缩但未启用 LZW 压缩,则图像数据将以可被 LZW 解码器读取的未压缩 LZW 格式写入。这可能导致 GIF 文件比预期更大。

Lossless 指无损 JPEG,仅当 JPEG 库已打补丁以支持它时才可用。通常不建议使用无损 JPEG。

写入 ICO 文件时,你可以通过指定 Zip 压缩来请求将图像编码为 PNG 格式。

写入 JNG 文件时,指定 Zip 压缩可请求将 alpha 通道编码为 PNG 的 "IDAT" 格式,或指定 JPEG 请求将其编码为 JPG 的 "JDAA" 格式。

使用 -quality 选项设置 JPEG、PNG、MIFF 和 MPEG 编码器所使用的压缩级别。使用 -sampling-factor 选项设置 JPEG、MPEG 和 YUV 编码器在对色度通道进行降采样时所使用的采样因子。

-connected-components connectivity

连通分量标注可检测图像中的连通区域,可从 4 路或 8 路连通性中选择。

使用 -define connected-components:verbose=true 输出与每个唯一标签相关的统计信息。

-contrast

增强或降低图像对比度。

此选项增强图像中较亮和较暗元素之间的强度差异。使用 -contrast 增强图像,或使用 +contrast 降低图像对比度。

如需更明显的效果,可以重复使用该选项:

magick rose: -contrast -contrast rose_c2.png

-contrast-stretch black-point

-contrast-stretch black-point{xwhite-point}{%}

通过拉伸强度值的范围来增加图像的对比度。

执行拉伸时,最多将 black-point 个像素变黑,最多将 white-point 个像素变白。或者,如果使用百分比,则最多将 black-point % 的像素变黑,最多将 white-point % 的像素变白。

在 ImageMagick 6.4.7-0 之前,-contrast-stretch 会最多将 black-point 个像素变黑,最多将总像素数减去 white-point 个像素变白。或者,如果使用百分比,则最多将 black-point % 的像素变黑,最多将 100% 减去 white-point % 的像素变白。

请注意,-contrast-stretch 0 将修改图像,使图像的最小值和最大值分别被拉伸到 0 和 QuantumRange,而不会因两端的过曝或裁剪而损失任何数据。这与 -normalize 不同,后者等价于 -contrast-stretch 2%x1%(或在 ImageMagick 6.4.7-0 之前等价于 -contrast-stretch 2%x99%)。

该运算符内部的工作方式是创建一个直方图箱(bin),然后使用该箱来修改图像。因此,原本落入同一“箱”中的某些颜色可能会被合并在一起。

当使用默认的 +channel 设置时,所有通道都会以相同的量协同归一化,以保持颜色完整性。指定任何其他 -channel 设置都会独立地归一化 RGB 通道。

另请参阅 -auto-level,以获得对数学图像的“完美”归一化。

该运算符正在审查以待重新开发。

-convolve kernel

使用用户提供的卷积核对图像进行卷积。

该核是一个矩阵,指定为以逗号分隔的整数列表(无空格),从左到右排序,从顶行开始。目前仅支持奇数维度的核,因此指定核中的条目数必须为 32=9、52=25、72=49 等。

请注意,-convolve 运算符支持 -bias 设置。此选项会偏移卷积,使得正负结果相对于用户指定的偏置值。这对于处理同时包含负值和正值的卷积的非 HDRI 编译版 ImageMagick 非常重要。尤其在涉及高通滤波器或边缘检测的卷积时更是如此。如果没有输出偏置,负值会被裁剪为零。

当使用带有 HDRI 编译时设置的 ImageMagick 时,无需 -bias,因为 ImageMagick 能够存储/处理任何负结果而不会裁剪到颜色值范围(0..QuantumRange)。请参阅 高动态范围图像 页面上关于 ImageMagick 的 HDRI 实现的讨论。有关 HDRI 的更多信息,请访问 ImageMagick 的 使用 页面或此 维基百科 条目。

-copy geometry offset

将像素从图像的一个区域复制到另一个区域。

-crop geometry{@}{!}

裁剪出图像的一个或多个矩形区域。

有关 geometry 参数的完整细节,请参阅 图像几何

geometry 参数的宽度和高度给出裁剪后所保留图像的尺寸,偏移量中的 x 和 y(若存在)给出裁剪后图像左上角相对于原始图像的位置。若要指定被移除的量,请改用 -shave。

如果存在 x 和 y 偏移量,则生成单张图像,由裁剪区域中的像素构成。偏移量指定裁剪区域左上角的位置,相对于图像左上角向下和向右测量。如果存在 -gravity 选项且采用 NorthEast、East 或 SouthEast gravity,则它给出从图像右边缘到裁剪区域右边缘向左的距离。类似地,如果存在 -gravity 选项且采用 SouthWest、South 或 SouthEast gravity,则该距离在底边之间向上测量。

如果省略 x 和 y 偏移量,则生成一组指定 geometry 的图块,覆盖整个输入图像。如果指定的 geometry 超出输入图像的尺寸,则最右侧的图块和最底部的图块会较小。

你可以在 geometry 参数中添加 @,将图像平均分割为所生成的图块数量。

通过在 geometry 参数中添加感叹号标志,裁剪后图像的虚拟画布页面尺寸和偏移量会被设置成仿佛 geometry 参数是一个视口或窗口。这意味着画布页面尺寸被设置为与你所指定的完全相同的尺寸,图像偏移量设置为相对于所裁剪区域的左上角。

如果裁剪后的图像在其虚拟画布上“错过”了实际图像,则返回一张特殊的单像素透明“missed”图像,并给出“crop missed”警告。

在裁剪图像之前,可能有必要先对图像执行 +repage,以确保裁剪坐标框被重新定位到可见图像的左上角。类似地,你可能希望在裁剪之后使用 +repage 以移除遗留的页面偏移量。当你要写入诸如 PNG 这类支持图像偏移量的图像格式时,尤其如此。

-cycle amount

将图像的颜色映射表(colormap)位移 amount。

Amount 定义每个颜色映射表条目移动的位置数。

-debug events

启用调试输出。

events 参数指定要记录哪些事件。它可以是 None、All、Trace,或由以下一个或多个域组成的逗号分隔列表:Accelerate、Annotate、Blob、Cache、Coder、Configure、Deprecate、Exception、Locale、Render、Resource、Security、TemporaryFile、Transform、X11 或 User。

例如,要记录 cache 和 blob 事件,使用。

magick -debug "Cache,Blob" rose: rose.png

User 域通常为空,但开发者可以在自己私有的 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 信息("info:" 输出格式)中以 "Artifacts" 列出。

如果某个定义缺少 value,则会创建一个以该名称命名、值为空的标志定义。这用于控制开/关选项。使用 +define key 移除先前创建的定义。使用 +define "*" 移除所有现有定义。

同样的 'artifact' 设置也可以使用 -set "option:key" "value" 选项来定义,该选项还允许在所定义的值中使用 格式化与打印图像属性

option 和 key 与大小写无关(它们会被转换为小写以供解码器内部使用),而 value 与大小写相关。

此类设置的作用范围是全局的,会影响所有图像和操作。

可识别的 define 列表请参阅 ImageMagick Defines。例如:

magick bilevel.tif -define ps:imagemask eps3:stencil.ps

通过在值前加上 registry: 前缀来设置图像注册表(registry)的属性。例如,要设置存放工作文件的临时路径,使用:

-define registry:temporary-path=/data/tmp

-delay ticks

-delay ticksxticks-per-second {<} {>}

在暂停后显示下一张图像。

此选项用于调节图像序列的动画,在显示下一张图像之前必须经过 ticks/ticks-per-second 秒。默认情况下,图像序列每次显示之间没有延迟。默认的 ticks-per-second 为 100。

使用 > 仅在图像延迟的当前值超过给定延迟时才更改它。< 仅在当前值小于给定延迟时才更改图像延迟。例如,如果你指定 30> 而图像延迟为 20,则图像延迟不会改变。但是,如果图像延迟为 40 或 50,则延迟会被更改为 30。将给定延迟用引号括起来,以防止 < 或 > 被你的 shell 解释为文件重定向。

-delete indexes

从图像序列中删除由 index 指定的图像。

通过图像在序列中的索引来指定它。第一张图像的索引为 0。负索引相对于序列末尾,例如 -1 表示序列的最后一张图像。用短划线指定图像范围(例如 0-4)。用逗号分隔多个索引(例如 0,2)。使用 +delete 删除当前图像序列中的最后一张图像。使用 -delete 0--1 删除整个图像序列。

你也可以从持久注册表中删除图像,例如 -delete registry:checkers

-density width

-density widthxheight

设置图像用于在设备上渲染的水平和垂直分辨率。

此选项指定在编码栅格图像时要存储的图像分辨率,或在将诸如 Postscript、PDF、WMF 和 SVG 这类矢量格式渲染(读取)为栅格图像时的画布分辨率。图像分辨率提供渲染到输出设备或栅格图像时所应用的度量单位。默认的度量单位为每英寸点数(DPI)。可以使用 -units 选项改为选择每厘米点数。

默认分辨率为每英寸 72 点,相当于每像素一点(Macintosh 和 Postscript 标准)。计算机屏幕通常为每英寸 72 或 96 点,而打印机通常支持每英寸 150、300、600 或 1200 点。

如果文件格式支持,此选项可用于更新所存储的图像分辨率。请注意,Photoshop 从专有的嵌入式配置文件中存储和获取图像分辨率。如果未从图像中剥离此配置文件,则 Photoshop 将继续按其原先的分辨率处理图像,而忽略标准文件头中指定的图像分辨率。

-density 选项设置一个属性,并不改变底层的栅格图像。它可用于通过调整应用于像素的缩放比例,为桌面出版目的调整渲染尺寸。若要改变图像中的像素数量,使其具有相同的物理尺寸(以英寸或厘米计),请使用 -resample 选项。

-depth value

图像的深度。

色彩深度是每个像素中每个通道的位数。例如,对于使用 RGB 的深度 16,红、绿、蓝每个通道的取值范围可从 0 到 2^16-1(65535)。使用此选项指定深度未知的原始图像格式(如 GRAY、RGB 或 CMYK)的深度,或在读取图像后更改其深度。默认情况下,在降低像素深度时,高位会被截断。使用 -dither FloydSteinberg 改为将量化误差分散到相邻像素。

使用 +depth 将深度恢复为其默认值。

-descend

通过下降窗口层级来获取图像。

-deskew threshold{%}

拉直图像。阈值为 40% 对大多数图像有效。

使用 -set option:deskew:auto-crop true | false 自动裁剪图像。

-despeckle

减少图像中的杂斑。

-direction type

从右到左或从左到右渲染文本。需要 RAQM 委托库以及 复杂文本布局

-displace horizontal-scale{%}{!}

-displace horizontal-scalexvertical-scale{%}{!}

按位移图(displacement map)所定义的方式移动图像像素。

使用此选项时,'overlay' 图像以及可选的 'mask' 图像被用作位移图,用于位移在叠加区域每个点处所看到的 'background' 图像部分的查找位置。这很像位移图是一面 'lens'(透镜),它使透过它照射的光线发生偏转,从而呈现其后方原始 'background' 图像的扭曲视图。

位移图中任何完全的灰色区域产生图像的零位移。黑色区域产生查找点给定的最大负位移,而白色产生查找的最大正位移。

请注意,被位移的是对 'background' 的查找,而不是图像本身的位移。因此,位移图中包含 'white' 的区域会使查找点 'shifted' 一个正向量,从而生成目标图像相对于正确位置向右/向下的副本。也就是说,图像看起来仿佛被向左/向上的负方向 'shifted' 了。理解这一点对于理解位移图如何工作非常重要。

给定的参数定义某个特定位移图所能产生的最大位移量(以像素计)。如果位移比例足够大,还可能查找到远在位移图自身边界之外的 'background' 图像部分。也就是说,你可以非常容易地将原始图像中叠加区域之外的一部分复制到叠加区域之内。

'%' 标志使位移比例相对于 overlay 图像的尺寸(100% = 图像宽/高的一半)。使用 '!' 则将百分比参数切换为指代目标图像的尺寸。这些标志在 IM v6.5.3-5 中加入。

通常会提供单张灰度位移图,配合给定的缩放值将确定一个单一方向(向量),位移可沿该方向发生(正向或负向)。然而,如果你还指定通常用作 mask 的第三张图像,则合成图像用于水平 X 位移,而 mask 图像用于垂直 Y 位移。这使你能够为 X 和 Y 方向定义完全不同的位移值,并允许你查找缩放边界内的任意点。换句话说,每个像素都可以查找任意其他附近的像素,产生复杂的二维位移,而非简单的一维向量位移。

或者,作为提供两张独立图像的替代方式,从 IM v6.4.4-0 起,你可以使用 overlay 图像的 'red' 通道来指定水平或 X 位移,并使用 'green' 通道来指定垂直或 Y 位移。

从 IM v6.5.3-5 起,overlay 图像中的任何 alpha 通道被用作目标图像透明度的 mask。但叠加区域之外的区域不会受到影响。

-display host:display[.screen]

指定要联系的 X 服务器。

此选项与 convert 一起使用,用于从此 X 服务器获取图像或字体。参见 X(1)。

-dispose method

为正在创建或读入的图像定义 GIF 处置(disposal)图像设置。

图层处置方法定义在动画的当前 'frame'(帧)显示完毕之后(在其 'delay' 周期之后)、但在动画的下一帧被叠加到显示之前,每张所显示图像被修改的方式。

以下是有效的方法:

Undefined
0: 未指定处置(等同于 'none')。
None
1: 不处置,仅叠加下一帧图像。
Background
2: 用背景色清除帧区域。
Previous
3: 清除到本帧叠加之前的图像。

你也可以使用上面给出的数字,这正是 GIF 格式内部用来表示上述设置的方式。

要打印完整的处置方法列表,使用 -list dispose。

使用 +dispose 关闭该设置,并阻止重置正在读入图像的图层处置方法。

使用 -set 'dispose' method 为已在内存中的图像设置图像处置方法。

-dissimilarity-threshold value

子图像匹配的最大 RMSE(默认 0.2)。

-dissolve src_percent[xdst_percent]

按给定百分比将一张图像溶解(dissolve)到另一张图像中。

合成图像的不透明度乘以给定的百分比,然后将其 'over'(覆盖)合成到主图像之上。如果 src_percent 大于 100,则开始溶解主图像,使其在值为 '200' 时变得透明。如果给定了两个百分比,则每张图像都按所给百分比溶解。

请注意,溶解百分比不会相加,两张不透明图像以 '50,50' 溶解会产生 75% 的透明度。要对两张图像进行 50% + 50% 的混合,你需要使用 '50,100' 的溶解值。

-distort method arguments

使用给定的方法及其所需参数对图像进行扭曲。

参数是一个字符串,其中包含以逗号或空格分隔的浮点数列表。浮点数的个数及含义取决于所使用的扭曲方法。

请从以下扭曲类型中选择:

Method Description
ScaleRotateTranslate
SRT 先围绕给定的“中心”进行缩放和旋转,再将该“中心”平移到新位置,按此顺序对图像进行扭曲。这是指定“Affine”类型扭曲的一种替代方法,但不带错切效果。它还提供了一种很好的方式,用于旋转并位移较小的图像,以便将其平铺到较大的背景上(即二维动画)。
参数的个数决定了每个参数在缩放、旋转和平移操作中的具体含义。
2: Scale Angle
3: X,Y Angle
4: X,Y Scale Angle
5: X,Y ScaleX,ScaleY Angle
6: X,Y Scale Angle NewX,NewY
7: X,Y ScaleX,ScaleY Angle NewX,NewY
这实际上是指定二维线性“Affine”或“AffineProjection”扭曲的一种替代方式。
Affine 通过移动至少 3 组或更多组控制点(如下定义)对图像进行线性扭曲。理想情况下给定 3 组即 12 个浮点值,使图像可以根据这三个点进行线性缩放、旋转、错切和平移。另请参阅相关的“AffineProjection”和“SRT”扭曲。
当给定的控制点对超过 3 组(12 个数字)时,将进行最小二乘拟合,以最佳匹配线性仿射扭曲。如果只给定 2 组控制点对(8 个数字),则执行两点图像平移、旋转和缩放,而不会对结果图像产生任何可能的错切、翻转或长宽比变化。如果只提供一组控制点对,则图像只进行平移(可以是浮点非整数平移)。
此扭曲不包含任何形式的透视扭曲。
RigidAffine 刚性仿射(也称为欧几里得变换)与 Affine 类似,但将扭曲限制为 4 个参数(S、R、Tx、Ty),其中 Sy = Sx 且 Ry = -Rx,因此扭曲只包含缩放、旋转和平移。没有错切。至少需要两组控制点对。
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 组时,将回退为“Affine”线性扭曲。
透视扭曲后的图像可确保直线保持笔直,但扭曲后图像的比例会有所变化。地平线经过抗锯齿处理,“天空”颜色可使用 -mattecolor 设置进行设定。
PerspectiveProjection 基于一组 8 个预先计算好的系数执行“Perspective”扭曲。你可以通过查看“Perspective”扭曲的 -verbose 输出来获取这些系数,或者自行计算。如果最后两个透视缩放系数为零,则其余 6 个表示一个转置的“仿射矩阵”。
Polynomial 使用一组对应的控制点执行 N 阶二维“Polynomial”扭曲。多项式的阶数决定了所需控制点的最小数量。1 阶等同于 -distort Affine。1.5 阶等同于 -distort BilinearReverse。典型用途是 2 阶扭曲。没有 +distort polynomial。
Arc 在围绕一个圆的给定角度上对图像进行弧形扭曲(极坐标映射的变体)。
arc_angle:图像从一侧到另一侧进行弧形扭曲所跨越的角度
rotate_angle:将结果图像从垂直中心旋转的角度
top_radius:将源图像的顶边设置在此半径处
bottom_radius:将底边设置在此半径处(径向缩放)
结果图像总是会被调整尺寸以最佳贴合(就像使用 +distort 一样),同时尽可能根据用户给定的参数保持原始图像的比例和长宽比。要改变“Arc”图像的整体长宽比,需要全部四个参数。
这是极坐标扭曲的一种变体,旨在尽量保持图像的长宽比,而不是进行直接的笛卡尔到极坐标的转换。
Polar 类似于“Arc”,但执行从笛卡尔坐标到极坐标的完整映射。也就是说,输入图像的高度被映射到半径范围,而宽度则在角度范围之间环绕。
参数:Rmax,Rmin CenterX,CenterY, start,end_angle
所有参数均为可选。Rmin 默认为零,中心默认为图像中心,角度从 -180(顶部)到 +180(顶部)。如果 Rmax 给定特殊值“0”,则使用从中心到最近边缘的距离作为输出图像的半径,这将确保整个图像可见(不过会缩得更小)。然而,特殊值“-1”将使用从中心到最远角的距离,这可能会从输入的矩形图像中“裁掉”角部,但会生成与使用相同参数的“DePolar”完全相反的结果。
如果使用 distort 的加号形式(+distort),输出图像中心将默认为虚拟画布的 0,0,并调整图像尺寸以确保整个输入图像在虚拟画布上的输出图像中可见。
DePolar 使用与“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 * ( Ar3 + Br2 + C*r + D ),其中 X,Y 是可选的扭曲中心(默认为图像中心)。
第二种形式通常用于扭曲图像,而不是校正镜头畸变。
BarrelInverse 这与“Barrel”非常相似,参数集和参数处理方式相同。不过它使用径向多项式的倒数,从而形成函数 Rsrc = r / ( Ar3 + Br2 + C*r + D )。注意,这不是“Barrel”扭曲的逆运算,而只是一种不同的桶形径向扭曲方法。
Shepards 使用反平方距离插值法(Shepards 方法)对给定的控制点列表(任意数量)进行扭曲。这些控制点实际上会对给定控制点周围的图像进行“局部”位移(保持控制点附近区域的外观和旋转)。为获得最佳效果,应添加额外的控制点来“锁定”角部、边缘以及图像中其他不变部分的位置,以防止它们移动。
这种扭曲被比作用钉子“拉太妃糖”,或将“别针”插入一块“果冻”中,然后将其移动到新位置,从而扭曲果冻的表面。
在内部,它等同于生成一个位移图(见 -displace),用于通过同名的 -sparse-color 方法对源图像进行颜色查找。
要打印完整的扭曲方法列表,请使用 -list distort。

上述许多扭曲方法(如“Affine”、“Perspective”和“Shepards”)使用一个控制点列表来定义给定图像中的这些点应如何在目标图像中被扭曲。每组四个浮点值表示一个源图像坐标,紧接着是目标图像坐标。这会生成如下所示的值列表……

U1,V1 X1,Y1 U2,V2 X2,Y2 U3,V3 X3,Y3 ... Un,Vn Xn,Yn

其中源图像上的 U,V 被映射到目标图像上的 X,Y。

例如,要使用“perspective”扭曲来扭转图像,需要至少 4 组坐标,即 16 个数字。下面是对内置 "rose:" 图像进行的透视扭曲。注意这里如何用空格将 4 组坐标对分组,以便更易于阅读和理解。

magick 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”扭曲)。

通过使用更多坐标,你可以利用图像配准工具在重叠图像中找到匹配的坐标对,从而改善扭曲的“拟合”效果。当然,错误的坐标对也可能使“拟合”变得更糟。请始终谨慎操作。

颜色根据柱面重采样 -filter 从源图像中获取,使用一种称为 EWA 重采样的特殊技术。这会产生非常高质量的结果,尤其是当图像在输出中变小(缩小)时——这在使用“perspective”扭曲时非常常见。例如,这里我们一直观察一个无限平铺的“平面”,直至地平线。

magick -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

注意,涉及地平线的无限平铺透视图像可能非常慢,因为靠近“地平线”的每个单独像素都是由大量像素压缩而成的。你可以通过指定特殊的 -filter 设置“point”来关闭 EWA 重采样(如果你打算改用超采样,则推荐这样做)。

如果某个图像生成了_无效像素_(例如上一个例子中的“天空”),-distort 将对这些像素使用当前的 -mattecolor 设置。如果你不希望这些像素可见,请将颜色设置为与其余地面相匹配。

输出图像的尺寸默认与输入图像相同。这意味着,如果扭曲后图像的某部分落在“扭曲空间”的可视区域之外,那些部分将被裁剪并丢失。然而,如果你使用运算符的加号形式(+distort),运算符将尝试(如果可能)显示整个扭曲后的图像,同时保留正确的“虚拟画布”偏移量,以用于图像分层。如果不需要该偏移量,可能需要使用 +repage 将其移除。

设置 -verbose 设置后,-distort 将尝试输出内部系数以及与该扭曲等效的 -fx 表达式,以供专家研究和调试之用。并非所有扭曲都支持此功能。

你也可以指定一个特殊的 "-define distort:viewport={geometry_string}" 设置,用于指定所生成的扭曲图像空间“视口”图像的尺寸和偏移量。

设置 "-define distort:scale=scale_factor" 将按该因子缩放输出图像(无论是视口还是其他),而不改变扭曲图像所查看的内容。这既可用于对图像进行“超采样”以获得更高质量的结果,也可用于在图像中平移和缩放(配合相应的视口更改,或扭曲后的裁剪和调整尺寸)。

设置 "-define resample:verbose=1" 将输出由 EWA(椭圆加权平均)重采样算法创建的柱面滤镜查找表。注意此表使用平方半径查找值。这通常仅用于调试 EWA 重采样。

-distribute-cache port

启动一个分布式像素缓存服务器。

-dither method

当通过某个选项应用通用色彩缩减时,或在保存为特定格式时自动地,对图像应用 Riemersma 或 Floyd-Steinberg 误差扩散抖动。该功能默认启用。

抖动将两种或更多颜色放置在相邻的像素中,使得在人眼看来能够更近似地再现图像的原始颜色。这减少了再现图像所需的颜色数量,但代价是产生较低层次的颜色图案。误差扩散抖动可以使用任意一组颜色(生成的或用户定义的)应用于图像。

抖动默认开启,要关闭它请使用该设置的加号形式 +dither。这还会在渲染 PostScript 时不进行文本或图形的抗锯齿处理。禁用抖动通常(但并非总是)会带来更快的处理速度、更少的颜色数量,但图像着色更像卡通。一般会在带有色彩渐变的区域产生“色彩条带”效果。

色彩缩减运算符 -colors、-monochrome、-remap 和 -posterize 会使用它们创建的缩减颜色集对图像应用抖动。这些运算符在将图像保存为颜色支持有限的格式(例如 GIF:、XBM: 等)时,也会作为自动色彩缩减的一部分使用,因此在这些情况下也可能会用到抖动。

或者,你可以使用 -random-threshold 生成纯随机抖动。或者使用 -ordered-dither 应用阈值映射的抖动图案,使用均匀颜色映射,而不是特定的颜色映射。

例如,使用 "-define dither:diffusion-amount=35% 来控制 Floyd-Steinberg 抖动的程度。

-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
specification
image
operator x0,y0 w,h filename

文本基元:

text
x0,y0 string

文本重力基元:

gravity
NorthWest, North, NorthEast, West, Center, East, SouthWest, South, or SouthEast

文本重力基元仅影响文本的放置位置,不与其他基元交互。它等同于使用 -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 指定。(由于它只涉及单个像素,point 基元不受 -stroke 或 -strokewidth 的影响。)

line 基元需要一个起点和一个终点。

rectangle 基元由左上角和右下角的一对点指定。

roundRectangle 基元采用与 rectangle 相同的角点,后面再跟上要削去的圆角的宽度和高度。

circle 基元绘制一个圆盘(填充)或圆(不填充)。给出圆心和圆周(边界)上的任意一点。注意,通过使用平移,你可以无需计算圆的边缘坐标,而是直接给出半径:

magick -size 100x60 xc: -stroke SeaGreen  -fill PaleGreen -strokewidth 2 -draw 'translate 50,30 circle 0,0 25,0' circle.gif

arc 基元用于在给定的矩形内绘制一段椭圆弧。arc 需要用于矩形的两个角点(见上文),后面跟上该弧段的起始角和结束角(例如 130,30 200,100 45,90)。所生成的起点和终点随后用一条线段连接,由此得到的椭圆段被填充。

使用 ellipse 来绘制部分(或整个)椭圆。给出圆心点、水平和垂直“半径”(椭圆的半轴)以及以度为单位的起始角和结束角(例如 100,100 100,150 0,360)。

polyline 和 polygon 基元需要三个或更多的点来定义它们的边界。polyline 就是一个最后一点不与起点描边相连的 polygon。当不填充时,它是一条多边形折线。如果 -stroke 设置为 none(默认值),那么 polyline 与 polygon 完全相同。

坐标是由空格或可选的逗号分隔的一对整数。

例如,要定义一个以 100,100 为圆心、延伸到 150,150 的圆,请使用:

-draw 'circle 100,100 150,150'

Bezier 基元创建一条样条曲线,需要三个或更多的点来定义其形状。第一个点和最后一个点是节点(knot),曲线会经过这些点,而任何中间坐标都是控制点。如果指定了两个控制点,则每个端点节点与其顺序对应的控制点之间的连线决定了曲线在该端点处的切线方向。如果指定了一个控制点,则从两个端点节点到这一个控制点的连线决定了曲线在每个端点处的切线方向。如果指定了两个以上的控制点,那么这些额外的控制点会共同作用以决定曲线的中间形状。为了绘制复杂的曲线,强烈建议要么使用 path 基元,要么绘制多段四点 bezier,并将每段相继线段的起始节点和结束节点重复。例如:

-draw 'bezier 20,50 45,100 45,0 70,50'
-draw 'bezier 70,50 95,100 95,0 120,50'

path 表示一个对象的轮廓,它由 moveto(设置一个新的当前点)、lineto(绘制一条直线)、curveto(绘制 Bezier 曲线)、arc(椭圆弧或圆弧)和 closepath(通过绘制一条到上一个 moveto 的线段来闭合当前形状)等元素来定义。复合路径(即带有子路径的路径,每个子路径由一个 moveto 后跟一个或多个 line 或 curve 操作组成)是可能的,以便实现诸如对象中的甜甜圈孔洞之类的效果。(参见 Paths。)

使用 image 将一幅图像与另一幅图像合成。在 image 关键字后面跟上合成运算符、图像位置、图像尺寸和文件名:

-draw 'image SrcOver 100,100 225,225 image.jpg'

你可以为图像尺寸使用 0,0,这表示使用图像头中找到的实际尺寸。否则,图像会被缩放到给定的尺寸。有关可用的 alpha 合成方法的详细讨论,请参见 Alpha Compositing

诸如 "dissolve" 之类需要参数的“特殊增强合成运算符”目前还不能与 -draw image 选项一起使用。

使用 text 为图像添加文本标注。在文本坐标后面跟上一个字符串。如果字符串中含有嵌入的空格,请用单引号或双引号将其括起来。

例如,下面这条命令为标题为 bird.miff 的图像添加标注 Works like magick!。

-draw "text 100,100 'Works like magick!'"

参见 -annotate 选项,了解另一种为图像添加文本标注的便捷方法。

rotate 基元会围绕主图像的原点旋转后续的形状基元和文本基元:

-draw "rotate 45 text 10,10 'Works like magick!'"

translate 基元平移后续的形状基元和文本基元。

scale 基元对它们进行缩放。

skewX 和 skewY 基元相对于主图像或区域的原点对它们进行倾斜。

这些变换会修改当前的仿射矩阵,该矩阵从由 -affine 选项定义的初始仿射矩阵初始化而来。变换在同一个 -draw 选项内是累积的。初始仿射矩阵不受影响;该矩阵只有在出现另一个 -affine 选项时才会改变。如果出现另一个 -draw 选项,则当前仿射矩阵会从初始仿射矩阵重新初始化。

使用 color 基元将某个像素的颜色更改为填充颜色(参见 -fill)。在像素坐标后面跟上一个方法:

point
replace
floodfill
filltoborder
reset

将你的坐标所指定的像素视为目标像素。point 方法对目标像素重新着色。replace 方法对任何与目标像素颜色相匹配的像素重新着色。Floodfill 对任何与目标像素颜色相匹配且为其邻接的像素重新着色,而 filltoborder 对任何不是边界颜色的邻接像素重新着色。最后,reset 对所有像素重新着色。

使用 matte 将像素的 matte 值更改为透明。在像素坐标后面跟上一个方法(方法的说明参见 color 基元)。point 方法更改目标像素的 matte 值。replace 方法更改任何与目标像素颜色相匹配的像素的 matte 值。Floodfill 更改任何与目标像素颜色相匹配且为其邻接的像素的 matte 值,而 filltoborder 更改任何不是边界颜色(-bordercolor)的邻接像素的 matte 值。最后,reset 更改所有像素的 matte 值。

你可以分别使用 -fill、-font 和 -box 来设置基元颜色、字体和字体边界框颜色。选项按命令行顺序处理,因此请务必在 -draw 选项之前使用这些选项。

以数字开头的字符串必须加引号(例如使用 '1.png' 而不是 1.png)。

绘图基元遵循 Magick Vector Graphics 格式。

注意,绘图需要 alpha 通道。如果没有可用的 alpha 通道,则会隐式创建一个全不透明的 alpha 通道。

-duplicate count,indexes

将一幅图像复制一次或多次。

通过图像在序列中的索引指定要复制的图像及复制次数。第一幅图像的索引为 0。负索引相对于序列的末尾,例如 -1 表示序列的最后一幅图像。用短划线指定图像范围(例如 0-4)。用逗号分隔索引(例如 0,2)。使用 +duplicate 复制当前图像序列中的最后一幅图像。

-edge radius

检测图像内的边缘。

-emboss radius{xsigma

对图像进行浮雕处理。

-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)。

要打印字节序类型的完整列表,请使用 -list endian 选项。

使用 +endian 恢复为未指定的字节序。

-enhance

应用数字滤波器以增强有噪声的图像。

-equalize

逐通道对图像执行直方图均衡化。

要对所有通道协同执行直方图均衡化,请将图像变换到其他某种色彩空间(例如 HSL、OHTA、YIQ 或 YUV),然后对相应的类亮度通道进行均衡化,再转换回 RGB。

例如使用 HSL,我们有: ... -colorspace HSL -channel lightness -equalize -colorspace sRGB ...

对于 YIQ、YUV 和 OHTA,请使用红色通道。例如,OHTA 是一种主成分变换,它将大部分信息放在第一个通道中。这里我们有 ... -colorspace OHTA -channel red -equalize -colorspace sRGB ...

-evaluate operator value

通过求值算术、关系或逻辑表达式来改变通道像素。

(关于某些多参数函数,参见 -function 运算符。如果需要更复杂的计算,参见 -fx 运算符。)

下面的列表总结了各运算符的行为。为简洁起见,下文提到的“像素”的数值是指该像素对应通道的值,而“归一化像素”是该数值除以最大值(取决于安装的)QuantumRange 后的结果。(如果使用归一化像素,则在完成其他计算之后,通过乘以 QuantumRange 将其还原到完整范围。)

运算符 摘要(详见下文)
Abs 将 value 加到像素上并返回绝对值。
Add 将 value 加到像素上。
AddModulus 将 value 加到像素上并对 QuantumRange 取模。
And 像素与 value 的二进制 AND。
Cos, Cosine 以频率 value 对像素应用余弦,并加上 50% 偏置。
Divide 将像素除以 value。
Exp 以 e 为底的指数函数
Exponential 以 e 为底的指数函数
Gaussian-noise
Impulse-noise
InverseLog 对归一化像素应用反向缩放对数。
Laplacian-noise
LeftShift 将像素值左移 value 位(即将像素乘以 2value)。
Log 对归一化像素应用缩放对数。
Max 将像素设为 value 与当前像素值中的最大值(即将任何当前小于 value 的像素设为 value)。
Mean 加上 value 并除以 2。
Median 从图像序列中选取中值。
Min 将像素设为 value 与当前像素值中的最小值(即将任何当前大于 value 的像素设为 value)。
Multiplicative-noise (这些等同于对应的 -noise 运算符。)
Multiply 将像素乘以 value。
Or 像素与 value 的二进制 OR。
Poisson-noise
Pow 将归一化像素提升到 value 次幂。
RightShift 将像素值右移 value 位(即将像素除以 2value)。
RMS 对像素求平方并加上 value。
RootMeanSquare 对像素求平方并加上 value。
Set 将像素设为等于 value。
Sin, Sine 以频率 value 对像素应用正弦,并加上 50% 偏置。
Subtract 从像素中减去 value。
Sum
Threshold 对大于 value 的像素进行阈值处理。
ThresholdBlack 将等于或低于 value 的像素阈值化为零值。
ThresholdWhite 将高于 value 的像素阈值化为最大值。
Uniform-noise
Xor 像素与 value 的二进制 XOR。

所指定的函数仅应用于图像中先前设置的每个 -channel。如有必要,计算结果会被截断(裁剪)以适应区间 [0, QuantumRange]。图像的透明通道表示为 'alpha' 值(0 = 完全透明),因此,例如对 alpha 通道执行 Divide by 2 将使图像变为半透明。在 value 后追加百分号 '%' 可将该值指定为 QuantumRange 的百分比。

要打印 -evaluate 运算符的完整列表,请使用 -list evaluate。

Add、Subtract 和 Multiply 方法的结果也可以通过 -level 或 +level 运算符配合适当的参数来实现,以线性方式修改颜色值的整体范围。但请注意,-level 将透明度视为 'matte' 值(0 = 不透明),而 -evaluate 使用 'alpha' 值。

AddModulus 自 ImageMagick 6.4.8-4 起加入,提供对 QuantumRange 取模的加法。因此,除非所得像素值超出区间 [0, QuantumRange],否则它等同于 Add。

Exp 或 Exponential 自 ImageMagick 6.6.5-1 起加入,作用于归一化像素值。与 Exp 一起使用的 value 应为负值,以产生衰减的指数函数。非负值总是产生大于 1 的结果,因而超出区间 [0, QuantumRange]。其公式如下所示。

exp(value × u)

例如,如果输入图像被平方处理(如使用 -function polynomial "2 0 0"),则结果将是一个衰减的高斯函数。

Log 自 ImageMagick 6.4.2-1 起加入,作用于归一化像素值。这是一个缩放对数函数。与 Log 一起使用的 value 提供一个缩放因子,用于调整对数函数图像中的曲率。应用于归一化值 u 的公式如下。

log(value × u + 1) / log(value + 1)

Pow 自 ImageMagick 6.4.1-9 起加入,作用于归一化像素值。注意 Pow 与 -gamma 运算符相关。例如,-gamma 2 等同于 -evaluate pow 0.5,即一个“平方根”函数。与 -gamma 一起使用的 value 就是与 Pow 一起使用的 value 的倒数。

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).

使用 -set 'option:evaluate:clamp=true 来钳制求值结果。

另请参见 -function 运算符,它是 evaluate 的多值版本。

-evaluate-sequence operator

通过对一系列图像求值算术、关系或逻辑表达式来改变通道像素。请确保序列中的所有图像都处于相同的色彩空间,否则你可能会得到意外的结果,例如在命令行中添加 -colorspace sRGB。

要打印 -evaluate-sequence 运算符的完整列表,请使用 -list evaluate。

-exit

在此处停止处理。

此选项之后不再处理任何其他选项。在脚本中很有用,可强制 magick 命令退出,而不实际关闭它正在从中读取选项的管道。你也可以将该选项用作 magick 命令行上的_最终_选项,以代替隐式的输出图像,从而完全阻止任何图像写入。注意,即使是 NULL: 编码器也至少需要一个图像才能“不写入”!而此选项根本不需要任何图像。

-extent geometry

设置图像的尺寸和偏移。

如果图像被放大,未填充的区域将被设为背景色。要定位图像,请在 geometry 规范中使用偏移量,或在前面加上 -gravity 设置。要指定如何将图像与背景合成,请使用 -compose。

以下命令将一幅 JPEG 图像缩小或扩大以适应 800x600 的显示。如果输入图像的宽高比不正好是 4:3,则图像将居中放置在 800x600 的黑色画布上:

magick input.jpg -resize 800x600 -background black -compose Copy \
  -gravity center -extent 800x600 -quality 92 output.jpg

该命令也可以与比例一起使用。如果图像还不是该比例,它将被裁剪以适应。-gravity 设置会产生预期的效果。

以下命令将一幅 JPEG 图像裁剪为 4:3 比例:

magick input.jpg -extent 4:3 -quality 92 output.jpg

追加 < 表示仅当图像小于指定尺寸时才填充,_并且_当图像更大时不裁剪(即空操作)。追加 > 表示仅当图像大于指定尺寸时才裁剪,_并且_当图像更小时不扩展(即空操作)。

关于 geometry 参数的完整细节,请参见 Image Geometry

-extract geometry

从图像中提取指定区域。

此选项在从一幅非常大的原始图像中提取子区域时最为有用。注意,以下两个命令是等效的:

magick -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"

如果你省略偏移量,如下所示

magick -size 16000x16000 -depth 8 -extract 640x480 \
  image.rgb image.png

则图像将被调整为指定的尺寸,等同于:

magick -size 16000x16000 -depth 8 -resize 640x480 image.rgb image.png

关于 geometry 参数的完整细节,请参见 Image Geometry

-family fontFamily

为文本设置字体族。

此设置建议 ImageMagick 在渲染文本时应尝试使用的字体族。如果能找到该字体族就使用它;如果找不到,则替换为默认字体(例如 "Arial")或一个已知相似的字体族(例如,如果请求的 "System" 找不到,可能会使用 "Courier")。注意,该字体族可以是 CSS 风格的字体列表。

关于影响字体的其他设置,请参见选项 -font、-pointsize、-stretch、-style 和 -weight。

-features distance

为图像中的每个通道,在四个方向(水平、垂直、左右对角线)上以指定的 distance 显示(共生矩阵)纹理度量特征。

Angular Second Moment       Sum Entropy
Contrast                    Entropy
Correlation                 Difference Variance
Sum of Squares Variance     Difference Entropy
Inverse Difference Moment   Information Measure of Correlation 1
Sum Average                 Information Measure of Correlation 2
Sum Variance                Maximum Correlation Coefficient

-fft

实现正向离散傅里叶变换(DFT)。

此选项自 ImageMagick 6.5.4-3 起为新增(现在在 ImageMagick 6.6.0-9 中也已可供 Windows 用户使用)。它将图像从正常的(空间)域变换到频域。在频域中,图像被表示为不同振幅的复数正弦波的叠加。图像的 x 和 y 坐标分别是沿 x 和 y 方向的可能频率,而像素强度值是对应于正弦波振幅的复数。例如,参见 Fourier TransformDiscrete Fourier TransformFast Fourier Transform

此选项只需提供单个图像名称作为输出。然而,输出结果将包含两个分量。它要么是一个双帧图像,要么是两个独立的图像,取决于所指定的图像格式是否支持多帧图像。我们得到双重输出结果的原因是,频域使用复数来表示图像,而复数无法直接可视化。因此,复数值被自动分离为双分量的图像表示。第一个分量是复数的幅值,第二个是复数的相位。例如,参见 Complex Numbers

幅值和相位分量图像必须使用不限制颜色或不压缩图像的图像格式来指定。因此,推荐使用 MIFF、TIF、PFM、EXR 和 PNG 这些图像格式。除 PNG 外,所有这些格式都支持多帧图像。例如,

magick image.png -fft fft_image.miff

将生成作为 fft_image.miff[0] 的幅值图像和作为 fft_image.miff[1] 的相位图像。类似地,

magick image.png -fft fft_image.png

将生成作为 fft_image-0.png 的幅值图像和作为 fft_image-1.png 的相位图像。如果你更喜欢这种表示形式,那么可以通过在命令行中 -fft 之后加入 +adjoin,强制其他任何格式也生成两个输出图像。

输入图像可以是任意尺寸,但如果它不是正方形且不是偶数尺寸,则会被自动填充到输入图像宽度或高度中较大者,并填充为偶数像素数。填充将发生在输入图像的底部和/或右侧。所得的输出幅值和相位图像在该尺寸下是正方形的。填充的种类取决于 -virtual-pixel 设置。

两个输出分量的动态范围都将落在 [0, QuantumRange] 之内,因此无需启用 HDRI。相位值名义上的范围是 0 到 2*π,但被缩放以跨越整个动态范围。(最初的几个版本对非 HDRI 进行了缩放,但对 HDRI 未进行缩放。)幅值图像不被缩放,因此通常会包含非常小的值。因此,该图像通常看起来完全是黑色的。为了查看任何细节,幅值图像通常会用对数函数增强为通常所称的频谱。使用对数函数是为了相对于较亮的值更多地增强较暗的值。例如,可以按如下方式进行:

magick fft_image.miff[0] -contrast-stretch 0 \
  -evaluate log 1000 fft_image_spectrum.png"

其中先使用 -contrast-stretch 0 或 -auto-level 将图像缩放到完整动态范围。-evaluate log 的参数通常指定在 100 到 10,000 之间,取决于希望在频谱中呈现的细节量。较大的值会产生更多可见的细节。然而,细节过多可能会掩盖重要的特征。

使用 -fft 需要 FFTW 委托库。

使用 +fft 可生成两个输出图像,它们是复数值傅里叶变换的实部和虚部分量。

然而,由于实部和虚部分量可能包含负值,这要求 IM 在配置时启用了 HDRI。在这种情况下,你必须为实部和虚部分量结果使用 MIFF、TIF、PFM 或 MPC 格式,因为它们是能够保留负值和小数值而不进行裁剪或截断小数部分的格式。使用 MIFF 或 TIF 时,应添加 -define quantum:format=32,以允许这些图像类型在 HDRI 模式下正常工作而不被裁剪。

由 +fft 产生的实部和虚部分量图像同样是正方形、偶数尺寸的图像,原因与上文为幅值和相位分量图像所讨论的相同填充。

关于 ImageMagick 的 HDRI 实现的讨论,请参见 High Dynamic-Range Images 页面。关于 HDRI 的更多内容,请访问 ImageMagick 的 Usage 页面、Fred's Fourier Processing With ImageMagick page 或这篇 Wikipedia 词条。

默认情况下 FFT 会被归一化(而 IFT 不会)。使用 "-define fourier:normalize=forward 来显式地归一化 FFT 并取消归一化 IFT。

-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

在调整尺寸或扭曲图像时使用此类型的滤波器。

使用此选项可以影响图像在 -resize 和 -distort 等操作期间的调整尺寸运算。例如,你可以使用一个简单的调整尺寸滤波器,例如:

Point       Hermite       Cubic
Box         Gaussian      Catrom
Triangle    Quadratic     Mitchell
CubicSpline

使用 -define filter:lobes={2,3,4} 来为 CubicSpline 滤波器指定滤波支持大小。

同时也提供了 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 和类 Gaussian 的简单滤波器一起使用,否则你可能得不到预期的结果。
-define filter:support=radius 设置滤波支持半径。它定义滤波器应有多大,因此直接定义了滤波重采样过程有多慢。所有滤波器都有一个默认的“首选”支持大小。某些滤波器(如 Lagrange 和加窗滤波器)会根据该值进行自我调整。对于简单滤波器,该值要么什么都不做(只会拖慢重采样),要么会以不利的方式裁剪滤波函数。
-define filter:lobes=count 设置 Sinc/Bessel 滤波器要使用的瓣(lobe)数量。这是指定滤波器“支持”范围的另一种方式,旨在更适合加窗滤波器,尤其是用于图像扭曲时。
-define filter:sigma=value 用于定义 Gaussian 滤波器的 'sigma' 值。默认 sigma 值为 '0.5'。它只影响 Gaussian,但不会缩小(但可能放大)滤波器的 'support'。它可用于生成非常小的模糊,而不会因为使用很小的支持设置而导致滤波器“漏掉”像素。另一个常见设置是较大的值 '0.707'(即 '1/sqrt(2)' 的值)。
-define filter:b=b-spline_factor
-define filter:c=keys_alpha_factor 重新定义用于三次(cubic)滤波器(如 Cubic、Catrom、Mitchel 和 Hermite)以及 Parzen 三次窗口函数的值。如果只定义了其中一个值,则另一个值会被设置为生成一个 'Cubic-Keys' 滤波器。这些值的含义由 Mitchell-Netravali 的一篇研究论文所定义。
-define filter:kaiser-beta=value 用作 Kaiser 窗口函数一部分的 'alpha' 值。默认值为 '6.5'。它只影响 Kaiser 窗口函数,不影响任何其他属性。在 ImageMagick v6.7.6-10 之前,此选项被称为 "filter:alpha"(继承自非常古老的 "zoom" 程序)。它被更改是为了使该函数与更现代的学术研究用法保持一致,并更好地、更明确地为其赋义。
-define filter:kaiser-alpha=value 此值乘以 'PI' 等同于 "kaiser-beta",并会覆盖该设置。它只影响 Kaiser 窗口函数,不影响任何其他属性。
-define filter:filter=filter_function 直接将此函数用作加权滤波器。这将允许你直接使用诸如 Blackman 之类的窗口函数作为重采样滤波器,而不是将其作为正常用途的窗口函数。如果已定义但未同时定义窗口函数,则窗口函数会被设置为 Box。直接将 Sinc 或 Jinc 指定为滤波器也会产生此效果。
-define filter:window=filter_function IIR(无限脉冲响应)滤波器 Sinc 和 Jinc 使用给定的滤波器加窗(在定义的支持范围内下降到零)。这允许你指定一个滤波函数作为这些 IIR 滤波器的窗口函数。许多已定义的滤波器实际上就是这些 IIR 滤波器的窗口函数。一个典型的选择是 Box(这实际上关闭了窗口函数)。
-define filter:win-support=radius 改为将窗口函数缩放到此大小。这使得加窗(或自加窗的 Lagrange 滤波器)的行为就像支持窗口比实际提供给调用运算符的更大一样。然而滤波器仍会被裁剪到给定的真实支持大小。如果未设置,则该值等于正常的滤波器支持大小。
-define filter:verbose=1 这会使 IM 将关于最终内部滤波器选择的信息打印到标准输出。这包括一个关于所用滤波器设置的注释头部,以及可用于轻松绘制滤波器权重图的数据。但请注意,某些滤波器是以其他滤波器的形式在内部定义的。例如 Lanczos 滤波器被定义为一个 SincFast 加窗的 SincFast 滤波器,而 Mitchell 被定义为具有特定 'B' 和 'C' 设置的一般 Cubic 族滤波器。

例如,要得到一个 8 瓣 jinc 加窗的 sinc 滤波器(Genseng 滤波器?):

magick image.png \
  -filter sinc \
  -set filter:window=jinc \
  -set filter:lobes=8 \
  -resize 150% image.jpg"

或者一个原始的、未加窗的、4 瓣的 Sinc 滤波器:

magick image.png \
  -set filter:filter=sinc \
  -set filter:lobes=4 \
  -resize 150% image.jpg"

要提取原始窗口函数的数据,请将其与 'Box' 滤波器结合使用。例如 'Welch' 抛物线窗口函数。

magick null: -define filter:filter=Box \
  -define filter:window=Welch \
  -define filter:support=1.0 \
  -define filter:verbose=1 \
  -resize 2 null: > window_welch.dat
gnuplot
  set grid
  plot \"window_welch.dat\" with lines

请注意,专家选项是为那些已经研究并理解调整尺寸滤波器工作原理的图像处理专家提供的。如果缺乏这些知识,以及对所涉及实际滤波器定义的理解,使用专家设置更有可能对你的图像调整尺寸产生不利影响。

-flatten

这是 -layers 方法 "flatten" 的一个简单别名。

-flip

创建镜像

在垂直方向反射扫描线。图像将上下颠倒地镜像。

-floodfill {+-}x{+-}y color

在指定的偏移处用颜色对图像进行洪水填充(floodfill)。

洪水填充从给定的“种子点”开始,该点不受重力(gravity)影响。任何在给定颜色参数的 -fuzz 颜色距离内匹配、并与该“种子点”相连的颜色,都将被替换为当前的 -fill 颜色。

请注意,如果“种子点”处的像素本身(根据 -fuzz)不匹配给定颜色,那么将不会执行任何操作。

此运算符的工作方式更像 -opaque 选项,而不是那种直接在“种子点”读取匹配颜色的更通用的洪水填充。对于那种形式的洪水填充,请查看 -draw 及其 'color floodfill' 绘制方法。

-flop

创建镜像。

在水平方向反射扫描线,就像在垂直镜面中的图像一样。

-font name

设置在用文本标注图像或创建标签时所使用的字体。

要打印字体的完整列表,请使用 -list font 选项(对于 6.3.6 之前的版本,请使用 'type' 而不是 'font')。

除了上述预定义列表所指定的字体之外,你还可以指定来自特定来源的字体。例如 Arial.ttf 是一个 TrueType 字体文件,ps:helvetica 是 PostScript 字体,x:fixed 是 X11 字体。

关于其他影响字体的设置,请参阅选项 -family、-stretch、-style 和 -weight。

要指定显式的字体文件名或字体集合,请在字体路径前加上 @,例如 @arial.ttf。你可以为字体集合指定字体面索引,例如 @msgothic.ttc[1]。

-foreground color

定义菜单的前景色。", "display

颜色使用 -fill 选项下所述的格式来指定。

默认前景色为黑色。

-format type

图像格式类型。

当与 mogrify 实用程序一起使用时,此选项会将任何图像转换为你指定的图像 format。要查看 ImageMagick 支持的图像格式类型列表,请使用 -list format。

默认情况下,文件以其原始名称写出。但是,如果文件名扩展名匹配某个受支持的格式,则该扩展名会被替换为用 -format 指定的图像格式类型。例如,如果你将格式类型指定为 tiff 而输入图像文件名为 image.gif,则输出图像文件名将变为 image.tiff。

-format expression

输出格式化的图像特性。

关于如何指定此选项的参数,请参阅 Format and Print Image Properties

-frame geometry

用边框或斜面边框(beveled frame)环绕图像。

边框的颜色用 -mattecolor 命令行选项指定。

关于 geometry 参数的完整细节,请参阅 Image Geometry。geometry 参数的尺寸部分指示了添加到图像尺寸上的额外宽度和高度的量。如果在 geometry 参数中未给出偏移量,则添加的边框为纯色。如果存在偏移量 x 和 y,则它们指定边框的宽度和高度被分割,以形成厚度为 x 像素的外斜面和厚度为 y 像素的内斜面。负偏移量作为 frame 参数没有意义。

-frame 选项会受当前 -compose 设置的影响,并假定其使用默认的 'Over' 合成方法。它会用当前的 -bordercolor 设置生成一个适当大小的图像,然后绘制由四种与当前 -mattecolor 接近的不同颜色组成的边框。随后将原始图像叠加到此图像的中心。这意味着,使用默认的 'Over' 合成方法时,任何透明部分都可能被当前的 -bordercolor 设置所替换。

图像合成不受 -gravity 选项的影响。

-frame

在导入的图像中包含 X 窗口边框。

-function function parameters

对通道值应用函数。

此运算符根据给定的参数进行计算,以修改图像中每个先前设置的 -channel 的各个颜色值。关于计算结果如何处理的详情,请参见 -evaluate。

这可以视为 -evaluate 运算符的多参数版本。(在 ImageMagick 6.4.8−8 中加入。)

这里,parameters 是以逗号分隔的数值列表。数值的数量随所选函数的不同而变化。从以下函数中选择:

Polynomial
Sinusoid
Arcsin
Arctan

要打印 -function 运算符的完整列表,请使用 -list function。说明如下。

Polynomial

Polynomial 函数接受任意数量的参数,这些参数即为多项式的系数,按次数递减的顺序排列。也就是说,输入

-function Polynomial an,an-1,...a1,a0

将调用如下给出的多项式函数

a_n u^n + a_(n-1) u^(n-1) + ··· a_1 u + a_0,

其中 u 是像素原始的归一化通道值。

Polynomial 函数可以替代 -evaluate 运算符的 Set(常数多项式)以及 Add、Divide、Multiply 和 Subtract(某些线性多项式)。-level 运算符同样以线性方式影响通道。一些对应关系如下。

-evaluate Set value -function Polynomial value (常数函数;当通道为 RGB 时,设为 value×100% 的灰色。)
-evaluate Add value -function Polynomial 1,value
-evaluate Subtract value -function Polynomial 1,−value
-evaluate Multiply value -function Polynomial value,0
+level black% x white% -function Polynomial A,B (降低对比度。这里 A=(white-black)/100,B=black/100。)

Polynomial 函数具有极大的通用性,因为多项式可以以任意所需精度拟合任何连续曲线。

Sinusoid

Sinusoid 函数可通过设置频率、相移、振幅和偏置来使通道值按正弦方式变化。这些值以一到四个参数给出,如下所示,

-function Sinusoid freq,[phase,[amp,[bias]]]

其中 phase 以度为单位。(函数的定义域 [0,1] 对应于 0 到 freq×360 度。)其结果是:如果某像素的归一化通道值原本为 u,其最终的归一化值由下式给出

amp * sin(2*π* (freq * u + phase / 360)) + bias

例如,以下命令生成一条起始和结束都在 0.9 的曲线(分别当 u=0 和 1 时),并在 .7−.2=.5 与 .7+.2=.9 之间振荡三次。

-function Sinusoid 3,-90,.2,.7

amp 和 bias 的默认值均为 .5。phase 的默认值为 0。

Sinusoid 函数通过允许变化的振幅、相位和偏置,对 -evaluate 运算符的 Sin 和 Cos 进行了推广。对应关系如下。

-evaluate Sin freq -function Sinusoid freq,0
-evaluate Cos freq -function Sinusoid freq,90

ArcSin

ArcSin 函数生成 Sinusoid 的反曲线,可用于生成柱面畸变和位移映射。该曲线可相对于输入值和输出值范围进行调整。

-function ArcSin width,[center,[range,[bias]]]

所有值均以归一化的颜色值表示(0.0 为黑,1.0 为白)。默认覆盖输入(width)和输出(width)值从 0.0 到 1.0 的完整范围。'1.0,0.5,1.0,0.5'

range/π * asin( 2/width * ( u - center ) ) + bias

ArcTan

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)的百分比。

使用 +fuzz 可将 fuzz 值重置为 0。

-fx expression

对图像或图像通道应用数学表达式。

如果 expression 的第一个字符是 @,则表达式从以该字符串其余字符命名的文件中读取。

关于此选项的详细讨论,请参见 FX,特效图像运算符

-gamma value

伽马校正的程度。

同一幅彩色图像在两个不同的工作站上显示时,由于显示器的差异可能看起来不同。使用伽马校正来调整这种颜色差异。合理的取值范围为 0.8 到 2.3。伽马小于 1.0 会使图像变暗,大于 1.0 会使图像变亮。如果像素量子大小仅为八位(量子范围 0 到 255),对图像伽马进行大幅调整可能导致部分图像信息的丢失。

伽马会根据幂律逐像素调整图像的通道值,即 pow(pixel,1/gamma) 或 pixel^(1/gamma),其中 pixel 是归一化的或 0 到 1 的颜色值。例如,使用 gamma=2 的值等同于对图像取平方根。

使用 +gamma value 可在不实际调整图像像素的情况下设置图像的伽马级别。如果图像具有已知的伽马但未设为图像属性(例如 PNG 图像),此选项很有用。写入的是“文件伽马”,即显示伽马的倒数;例如,如果你的图像是 sRGB 并希望写入 PNG 的 gAMA 块,请使用

magick input.png +gamma .45455 output.png

(0.45455 是 1/2.2)

请注意,伽马调整也可通过 -level 运算符实现。

-gaussian-blur radius

-gaussian-blur radius{xsigma}

用高斯算子模糊图像。

使用给定的 Sigma 值,以高斯分布(正态分布)对图像进行卷积。公式为:

gaussian distribution

sigma 值是重要的参数,它决定了实际产生的模糊量。

radius 仅用于确定保存所计算高斯分布的数组的大小。它应为整数。如果未给出或设为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

radius 越大,操作越慢。然而 radius 过小可能导致严重的混叠效应。作为指导,radius 应至少为 Sigma 值的两倍,不过三倍会产生更精确的结果。

这与更快的 -blur 运算符不同,因为它使用完整的二维卷积来生成相邻像素的加权平均值。

-virtual-pixel 设置将决定图像本身之外的像素如何被模糊进最终结果中。

-geometry geometry

设置图像的首选大小和位置。

关于 geometry 参数的完整详情,请参见 图像几何

-gravity type

为各种其他设置和选项设定当前的重力(gravity)建议。

可选项包括:NorthWest、North、NorthEast、West、Center、East、SouthWest、South、SouthEast。使用 -list gravity 可获取你的 ImageMagick 安装中可用的 -gravity 设置的完整列表。

你选择的方向指定将文本或子图像放置在何处。例如,Center 的重力会强制文本在图像内居中。默认情况下,图像重力为未定义。关于图形基元的更多详情,请参见 -draw。-draw 中只有 text 基元受 -gravity 选项的影响。

-gravity 选项也与 -geometry 设置以及其他以 geometry 为参数的设置或选项(例如 -crop 选项)配合使用。

如果某个 -gravity 设置出现在另一个带有指定偏移量的 geometry 参数的选项或设置之前,则该偏移量通常会应用于由 -gravity 参数所建议的图像内的某个点。因此,例如在以下命令中,假设文件 image.png 的尺寸为 200x100。-region 参数所指定的偏移量为 (−40,+20)。-gravity 的参数为 Center,它建议图像的中点,即点 (100,50)。偏移量 (−40,20) 应用于该点,得到 (100−40,50+20)=(60,70),因此指定的 10x10 区域位于该点。(此外,-gravity 也影响区域本身,该区域以像素坐标 (60,70) 为中心。)(关于 geometry 参数的完整详情,请参见 图像几何。)

magick image.png -gravity Center -region 10x10-40+20 \
  -negate output.png

当作为 composite 的选项使用时,-gravity 给出图像在合成中所趋向的方向。

当作为 montage 的选项使用时,-gravity 给出图像在拼贴块内所趋向的方向。在此用途下默认重力为 Center。

使用 +gravity 可将重力恢复为其默认值。

-grayscale method

将图像转换为灰度。

这将使用某种 -intensity 方法将给定图像转换为灰度图像。

例如,要将图像转换为(线性)Rec709Luminance 灰度,请输入:

magick in.png -grayscale Rec709Luminance out.png

它等价于:

magick in.png -colorspace LinearGray out.png

类似地,要将图像转换为(非线性)Rec709Luma 灰度,请输入:

magick in.png -grayscale Rec709Luma out.png

它等价于:

magick in.png -colorspace Gray out.png

请注意,“colorspace”强度方法无论图像当前的色彩空间如何都会产生相同的结果。但“mathematical”强度方法取决于图像当前所使用的色彩空间。

虽然此操作使用 -intensity 方法,但它不使用也不设置 -intensity 设置,因此不会影响可能使用该设置的其他操作。

-green-primary x,y

绿色色度基准点。

-hald-clut

对图像应用 Hald 颜色查找表。

Hald 颜色查找表是一个映射到二维的三维颜色立方体。使用 HALD: 前缀创建它(例如 HALD:8)。你可以对该 Hald 图像应用任意颜色变换,然后使用此选项将该变换应用于图像。

magick image.png hald.png -hald-clut transform.png

此选项为你提供了一种便捷的方法,可使用 Gimp 或 Photoshop 对 Hald CLUT 图像进行颜色校正,随后使用 ImageMagick 脚本将其应用于多幅图像。

请注意,该表示仅针对正常的 RGB 色彩空间,并且会使用整个颜色值三元组对所表示的 Hald 颜色立方体图像进行插值查找。因此,该操作不受 -channel 设置的影响,也无法调整或修改图像的透明度或 alpha/matte 通道。

另请参见 -clut,它提供对各个颜色通道的颜色值替换,通常涉及更简单的灰度图像。例如:灰度到颜色的替换,或通过直方图映射进行修改。

-help

打印使用说明。

-highlight-color color

比较图像时,用此颜色突出显示像素差异。

-hough-lines widthxheight{+threshold}

识别图像中的直线(例如 -hough-lines 9x9+195)。

对任意经过二值边缘提取的图像使用 Hough 直线检测器,以定位并绘制其找到的任何直线。

该处理过程为二值边缘图像中的每个白色像素,针对每种可能的方向(角度从 0 到 179,以 1 度递增)和从图像中心到各角的距离(以 1 像素递增)累加计数。它将计数存储在一个角度对距离的累加矩阵中。累加器的大小将为 180x(对角线/2)。接下来,它在累加器中搜索计数的峰值,并将峰值的位置转换为常规 x,y 输入图像空间中的斜率和截距。该算法使用斜率/截距来求出被裁剪到图像边界内的端点。直线从给定的端点绘制。计数是直线长度的一种度量。

.

WxH 参数指定用于在 Hough 累加器中定位峰值的滤波器大小。threshold 排除计数小于阈值的直线。

使用 -background 指定绘制直线所在背景的颜色。默认为黑色。

使用 -fill 指定直线的颜色。默认为黑色。

使用 -stroke 和 -strokewidth 指定直线的粗细。默认为黑色且无 strokewidth。

通过为输出图像使用后缀 .mvg,可创建一个列出端点和计数的文本文件。

使用 -define hough-lines:accumulator=true 可在直线图像之外额外返回累加器图像。

-iconGeometry geometry

指定图标的几何参数。

几何规格中如果存在偏移量,将以与 -geometry 选项相同的方式处理,采用 X11 风格来处理负偏移量。

关于 geometry 参数的完整详情,请参见 图像几何

-iconic

在 X Windows 中以图标模式启动", 'animate', 'display

-identify

识别图像的格式和特征。

默认会打印以下信息:

  • 图像场景编号(如果不为零)
  • 图像名称
  • 图像格式
  • 图像大小
  • 虚拟页面偏移
  • 颜色深度
  • 色彩空间
  • 文件大小(字节)
  • 识别图像所消耗的用户时间
  • 识别图像所经过的时间

要自定义你想识别的属性,请使用 -format。

如果同时指定了 -colors,则会打印图像中的唯一颜色总数和颜色缩减误差值。关于这些值的说明,请参阅 颜色缩减算法

如果 -verbose 在此选项之前,则会显示大量图像属性,包括图像统计信息、配置文件、图像直方图等。

-ift

实现逆离散傅里叶变换(DFT)。

此选项自 ImageMagick 6.5.4-3 起为新增功能(并自 ImageMagick 6.6.0-9 起可在 Windows 用户上正常工作)。它将一对幅度图像和相位图像从频域变换为普通域(即空间域)中的单一图像。例如可参阅 Fourier TransformDiscrete Fourier TransformFast Fourier Transform

例如,取决于用于存储 -fft 结果的图像格式,可以使用以下任一方式

magick fft_image.miff -ift fft_image_ift.png

magick fft_image-0.png fft_image-1.png -ift fft_image_ift.png

如果在 -fft 或 +fft 之前原始图像不是正方形或不是偶数尺寸,则会引入填充,因此生成的图像可能需要裁剪。任何填充都位于图像的右侧和/或底部。

使用 -ift 需要 FFTW 委托库。

使用 +ift(启用 HDRI 时)可将一对实部图像和虚部图像从频域变换为普通(空间)域中的单一图像。

默认情况下 IFT 不进行归一化(而 FFT 会归一化)。使用 "-define fourier:normalize=inverse 可显式地对 IFT 进行归一化并取消对 FFT 的归一化。

-illuminant method

参考光源。从 A、B、C、D50、D55、D65、E、F2、F7 或 F11 中选择。

-immutable

使图像不可变。

-implode factor

围绕中心向内挤压图像像素。

-insert index

将最后一幅图像插入图像序列中。

此选项取出当前图像序列中的最后一幅图像,并将其插入到给定的索引位置。如果使用负索引,则插入位置是在最后一幅图像从序列中移除之前计算的。因此 -insert -1 不会对图像序列产生任何变化。

+insert 选项等同于 -insert -1。换句话说,即在当前图像序列的末尾插入最后一幅图像。因此这对图像序列的顺序没有影响。

-intensity method

从像素生成强度值的方法。

ImageMagick 提供了多种方法,用于在以下场景中:当某个运算符需要从具有红、绿、蓝像素分量的图像中确定单一灰度值时使用。通常使用 Rec709Luma 公式,这与将图像转换为 -colorspace gray 时使用的公式相同。

目前提供以下公式,它们会先将像素值转换为线性 RGB 或非线性 sRGB 色彩空间,然后再应用以计算最终的灰度值。

Rec601Luma
0.298839R' + 0.586811G'+ 0.114350B'
Rec601Luminance
0.298839R + 0.586811G + 0.114350B
Rec709Luma
0.212656R' + 0.715158G' + 0.072186B'
Rec709Luminance
0.212656R + 0.715158G + 0.072186B
Brightness
max(R', G', B')
Lightness
(min(R', G', B') + max(R', G', B')) / 2.0

请注意,上述 R、G、B 值是图像的线性 RGB 值,而 R'、G'、B' 是 sRGB 非线性值。

这些强度方法本质上是数学性的,无论当前值为何,也无论图像当前使用何种色彩空间,它们都会使用图像各自 R、G、B 通道中的当前值。

Average
(R' + G' + B') / 3.0
MS
(R'^2 + G'^2 + B'^2) / 3.0
RMS
sqrt( (R'^2 + G'^2 + B'^2) / 3.0 )

这些方法通常用于其他用途,例如在两幅彩色图像之间生成灰度差异图像(使用 -compose 'Difference' 合成)。

例如,'MS'(均方,Mean Squared)设置适合于最小化色彩误差比较。而……'RMS'(均方根,Root Mean Squared)方法则适用于从色彩差异图像计算色彩矢量距离。这等同于 -fuzz 因子色彩比较设置中的纯色彩分量部分。

另请参阅 -grayscale,它会直接将上述某个灰度化公式应用于图像,而不设置 -intensity 设置。

-colorspace gray 图像转换也会使用当前的强度设置,但在应用上述函数之前,总是会先将图像转换为相应的 sRGB 或线性 RGB 色彩空间。

要打印所有可用像素强度设置方法的完整列表,请使用 -list intensity。

受 -intensity 设置影响的运算符包括:

-adaptive-blur
-adaptive-sharpen
-black-threshold
-clut (when mapping greyscale CLUT image to alpha channel if set by -channels)
-colors for gray colorspace
-compose {LightenIntensity, DarkenIntensity, CopyOpacity, CopyBlack}
-contrast-stretch
-distort {ErodeIntensity, DilateIntensity}
-normalize
-random-threshold
-range-threshold
-selective-blur
-shade
-threshold
-tint
-white-threshold

-intent type

在管理图像色彩时使用此类型的渲染意图。

使用此选项可影响图像的色彩管理操作(参见 -profile)。可从以下意图中选择:Absolute、Perceptual、Relative、Saturation。

默认意图对于 sRGB 色彩空间为 Perceptual,对于 RGB 和 gray 色彩空间为 undefined。

要打印渲染意图的完整列表,请使用 -list intent。

-interlace type

交错方案的类型。

从以下选项中选择:

none
line
plane
partition
JPEG
GIF
PNG

此选项用于为诸如 RGB 或 YUV 等原始图像格式指定交错方案的类型。

None 表示不交错(RGBRGBRGBRGBRGBRGB...),

Line 使用扫描线交错(RRR...GGG...BBB...RRR...GGG...BBB...),以及。

Plane 使用平面交错(RRRRRR...GGGGGG...BBBBBB...)。

Partition 类似于 plane,但不同的平面会保存到各自独立的文件中(例如 image.R、image.G 和 image.B)。

使用 Line 或 Plane 可创建交错的 PNG 或 GIF,或渐进式 JPEG 图像。

要打印交错方案的完整列表,请使用 -list interlace。

-interline-spacing value

两个文本行之间的间距。

-interpolate type

设置在根据浮点值或实数值查找颜色时所使用的像素颜色插值方法。

当使用非整数浮点值查找像素颜色时,通常会落在源图像所定义的各像素颜色之间。此设置决定了如何根据该点周围像素的颜色来确定颜色。也就是说,如何确定落在两个甚至四个不同颜色像素之间的某点的颜色。

average
周围四个像素的平均颜色
average4
周围四个像素的平均颜色
average9
周围九个像素的平均颜色
average16
周围十六个像素的平均颜色

background

bilinear
像素的双线性插值(默认值)

blend

catrom
周围 16 个像素的拟合双三次样条
integer
左上角像素的颜色(向下取整函数)
mesh
将区域划分为两个平坦的三角形插值
nearest-neighbor
距查找点最近的像素(四舍五入函数)
spline
直接样条曲线(颜色会被模糊)

这对于诸如 -distort、-implode、-transform 和 -fx 等扭曲运算符最为重要。

要打印插值方法的完整列表,请使用 -list interpolate。

另请参阅 -virtual-pixel,用于控制对图像边界之外位置的查找。

-interpolative-resize geometry

使用插值进行尺寸调整。参见 -interpolate 设置。

-interword-spacing value

两个单词之间的间距。

-integral

计算图像中各值(像素值)的总和。

-kerning value

两个字母之间的间距。

-kmeans colors{xiterations}{+tolerance}

K 均值(迭代)色彩缩减(例如 -kmeans 5x300+0.0001)。Colors 是所需的颜色数。初始颜色通过色彩量化得出。Iterations 是停止迭代的次数(默认值为 300)。Convergence 是迭代之间色彩变化的停止阈值(默认值为 0.0001)。当达到迭代次数或容差中任一条件时,处理即结束。使用 -define kmeans:seed-colors=color-list 来初始化颜色,其中 color-list 是以分号分隔的种子颜色列表(例如 -define kmeans:seed-colors="red;sRGB(19,167,254);#00ffff)。颜色列表会覆盖色彩量化。非空的颜色列表会覆盖颜色数。任何未指定的初始颜色将从图像中随机分配颜色。

-kuwahara radius

-kuwahara radius{xsigma}

保边降噪滤波器。

radius 比 sigma 更为重要。如果省略 sigma,它将根据 radius 自动计算为 sigma=radius-0.5。sigma 提供了一些额外的平滑控制。

-label name

为图像指定标签。

使用此选项可在读入或创建图像时为其指定特定标签。可使用 -set 操作重新为已读入的图像指定标签。诸如 TIFF、PNG、MIFF 等图像格式支持将标签信息随图像一起保存。

将图像保存为 PostScript 文件时,分配给图像的任何标签都将用作在 PostScript 图像上方打印的标题字符串。

可通过嵌入特殊格式字符来包含图像文件名、类型、宽度、高度或其他图像属性。有关百分号转义码的详细信息,请参见 Format and Print Image Properties

例如,

-label "%m:%f %wx%h"  bird.miff

会在读入时为 "bird.miff" 图像(其宽度为 512、高度为 480)指定一个 MIFF:bird.miff 512x480 的图像标签。如果改用 +label 选项,则会使用图像中已存在的任何标签。可通过指定空字符串来移除图像中的所有标签。

标签不会绘制在图像上,而是通过 Label 标记或类似机制嵌入图像数据流中。如果希望标签在图像本身上可见,请使用 -draw 选项,或在创建图像拼贴(montage)的最终处理过程中实现。

如果字符串的第一个字符为 @,则图像标签会从一个以该字符串其余字符命名的文件中读取。文件中的标签是字面值,不会识别任何嵌入的格式字符。

-lat width

-lat widthxheight{+-}offset{%}

执行局部自适应阈值处理。

根据某个像素周围窗口内各像素的值,对该像素进行自适应阈值处理。如果当前像素比该平均值加上可选偏移量更亮,则将其设为白色,否则设为黑色。如果偏移量为正,则可忽略诸如扫描文档中那样的像素值微小变化。负偏移量会使其对这些微小变化更敏感。

这通常用于对背景不均匀的图像进行阈值处理。它基于以下假设:小窗口的平均颜色即为局部背景颜色,可据此将前景颜色分离出来。

-layers method

处理构成图层集合或动画帧的多张图像。

对一组有序的图像序列执行各种图像操作方法,这些图像可能代表一组叠加的“图层”、一个 GIF 处置(disposal)动画,或一个完全“合并(coalesced)”的动画序列。

Method Description
compare-any 将第二帧及之后的各帧裁剪为能够包含两张图像之间所有差异的最小矩形。不考虑任何 GIF 的 -dispose 处置方法。
这与 -deconstruct 操作符完全相同,并且不会保留动画的正常工作方式,尤其是当动画使用了诸如 'Previous' 或 'Background' 等图层处置方法时。
compare-clear 与 'compare-any' 相同,但裁剪到在第二帧中变为透明的任何不透明像素的边界。也就是为下一帧遮罩或擦除像素所需的最小图像。
compare-overlay 与 'compare-any' 相同,但裁剪到由于叠加彩色像素而为下一张图像添加额外颜色的像素。也就是用于添加或改变颜色的最小单张叠加图像。
这可以与 -compose 的 alpha 合成方法 'change-mask' 一起使用,将图像缩减为仅需要叠加的那些像素。
coalesce 等同于调用 -coalesce 操作符。将当前图像序列中设置的图层处置方法应用进来,以形成一个完全定义的动画序列,使其按应有的方式显示。实际上是将 GIF 动画转换为类似“胶片条”的动画。
composite 对由一张 "null:" 图像分隔的两个图像列表进行 alpha 合成,目标图像列表在前,源图像在后。每个列表中各取一张图像合成在一起,直到其中一个列表用完为止。分隔图像和源图像列表会被移除。
-geometry 偏移会根据 -gravity,按照每个列表中第一张图像的虚拟画布尺寸进行调整。与普通的 -composite 操作不同,画布偏移还会被加入到每张图像的最终合成定位中。
如果其中一个图像列表只包含一张图像,则无论它属于哪个列表,该图像都会被应用到另一个图像列表中的所有图像上。在这种情况下,被保留的是该列表的图像元数据。
dispose 这与 'coalesce' 类似,但显示的是应用图层处置方法之后、叠加下一张子帧图像之前的动画外观。也就是应用 GIF -dispose 方法所产生的“处置(dispose)”图像。这使你能够检查正在开发的某个特定动画出了什么问题。
flatten 使用当前的 -background 颜色创建一个与第一张图像虚拟画布同样大小的画布,并依次将每张图像 -compose 到该画布上。落在该画布之外的图像会被裁剪。最终图像的虚拟画布偏移为零。
这通常用作“图层叠加”操作的最后一步之一,将所有准备好的图层叠加成最终图像。
对于单张图像,此方法还可用于用真实像素填充虚拟画布,或在下方铺一层不透明颜色以移除图像的透明度。
merge 与 'flatten' 方法相同,但将所有给定的图层合并,以创建一张恰好足够容纳所有图像而不进行裁剪或留有额外空间的新图层图像。新图像的虚拟偏移将保留该新图层的位置,即使该偏移为负值。第一张图像的虚拟画布尺寸会被保留。
处理带有负偏移的图层时需谨慎,因为很少有图像文件格式能正确处理它们。在此操作方法之后使用 +repage 将移除图层偏移,并创建一张图像,其中所有叠加图像彼此之间的相对位置都被保留,尽管不一定恰好位于你所指定的位置。
另请参见下文的 'trim-bounds',它与之密切相关,但不进行“flatten”将图像合并在一起。
mosaic 与 'flatten' 方法相同,但仅沿正方向扩展第一张图像的初始画布尺寸,以容纳所有图层。然而,由于虚拟画布按其自身定义被“锁定”到原点,带有负偏移的图层仍会被顶部和左侧边缘裁剪。如果这可能成为问题,请参见 'merge' 或 'trim-bounds'。
此方法常用于在不知道最终画布尺寸的情况下,使用各种偏移来布局单张图像。生成的图像与 'flatten' 一样不会有任何虚拟偏移,因此可以保存为任何图像文件格式。
optimize 使用若干通用技术将一个已合并的动画优化为 GIF 动画。目前这是同时应用 'optimize-frame' 和 'optimize-transparency' 两种方法的快捷方式,但随着其他优化方法的开发,未来可能会扩展以包含它们。
optimize-frame 通过尽可能减少每帧的像素数量,将一个已合并的动画优化为 GIF 动画,方法是尝试选取最佳的图层处置方法,同时确保结果仍能正确播放动画。
无法保证一定能找到最佳优化。但话说回来,没有任何合理快速的 GIF 优化算法能做到这一点。然而,这似乎确实比所见过的大多数其他 GIF 帧优化器做得更好。
optimize-plus 与 'optimize-frame' 相同,但尝试通过向动画中添加额外帧来改善整体优化效果,而不改变动画的最终外观或时序。添加这些帧的目的是尝试将清除像素与从一帧到下一帧叠加新增像素的操作分离开来。如果这并未改善优化效果(仅针对下一帧而言),它将回退到之前普通 'optimize-frame' 技术的结果。
有可能因处置方式的改变导致后续帧的优化变差,尽管这种情况不太可能发生。换句话说,无法保证它一定优于普通的 'optimize-frame' 技术。然而对于某些动画,你可以在最终动画大小上获得巨大的改善。
optimize-transparency 给定一个 GIF 动画,将子帧叠加图像中的任何像素替换为透明,前提是这样做不会使生成的动画变化超过当前的 -fuzz 因子。
这应该能让一个已进行帧优化的现有 GIF 动画压缩为更小的文件大小,因为单一(透明)颜色的较大区域,要优于重复上一帧已处置图像的多种颜色组成的图案。
remove-dups 移除连续重复的图像(并合并其时间延迟),以简化已合并动画的图层叠加。
通常这是在整个动画中使用了恒定时间延迟的结果,或者是在一个较大的动画被拆分为较小的子动画之后产生的。这些重复帧也可能曾被用作某些帧优化方法的一部分。
remove-zero 移除任何时间延迟为零的图像,除非所有图像的时间延迟都为零(且不是一个正常计时的动画,此时会发出警告)。
在 GIF 动画中,这类图像通常是为真正显示给用户的各帧之间提供部分中间更新的帧。这些帧通常是为改进 GIF 动画的帧优化而添加的。
trim-bounds 找出当前图像序列中所有图像的边界,然后调整偏移量,使所有图像都包含在一个最小的正画布中。不会修改或合并任何图像数据,仅修改各图像的虚拟画布尺寸和偏移。所有图像都被赋予相同的画布尺寸,并具有正偏移,但彼此之间仍保持相同的相对位置。由于画布尺寸最小化,至少有一张图像会接触到该画布的每一条边缘。不过接触这些边缘的图像数据可能是透明的。
其结果很像你使用 'merge' 后再加上一个 +repage 选项,只不过所有图像都被保持为相互独立。如果在使用 'trim-bounds' 之后再使用 'flatten',你将得到相同的结果。

要打印图层类型的完整列表,请使用 -list layers。

操作符 -coalesce、-deconstruct、-flatten 和 -mosaic 只是上述方法的别名,未来可能会被弃用。另请参见 -page、-repage 操作符、-compose 设置,以及 GIF 的 -dispose 和 -delay 设置。

-level black_point{,white_point}{%}{,gamma}

调整图像通道的色阶(level)。

给定以逗号分隔的一个、两个或三个值:黑点(black-point)、白点(white-point)、伽马(gamma)(例如:10,250,1.0 或 2%,98%,0.5)。黑点和白点的范围从 0 到 QuantumRange,或从 0 到 100%;如果省略白点,则将其设为 (QuantumRange - black_point),以便使对比度变化居中。如果字符串中任何位置出现 % 符号,则黑点和白点都是完整颜色范围的百分比。Gamma 将对这些值执行 -gamma 调整。如果省略它,则假定默认值为 1.0(不进行伽马校正)。

在通常用法(-level)中,图像值会被拉伸,使原始图像中给定的 'black_point' 值被设为零(或黑色),而给定的 'white_point' 值被设为 QuantumRange(或白色)。这为你提供了对图像的直接对比度调整。随后会调整所得图像的 'gamma'。

从 ImageMagick v6.4.1-9 起,使用该操作符的加号形式(+level)或在参数列表中任何位置添加特殊的 '!' 标志,将使该操作符执行色阶调整的反向操作。也就是说,原始图像中的零值或 QuantumRange 值(分别对应黑色和白色)会被调整为给定的色阶值,从而允许你降低对比度,或压缩图像中通道值的范围。在进行降低对比度的色阶调整之前,会先调整 'gamma'。

仅会调整由当前 -channel 设置所定义的通道(默认仅为 RGB 颜色通道),从而允许你限制此操作符的作用范围。

请注意,透明度通道被视为“蒙版(matte)”值(0 为不透明),而非“alpha”值(0 为透明)。

-level-colors {black_color}{,}{white_color}

使用所提供的以短横线分隔的颜色来调整图像的色阶(level)。

此功能与 -level 完全相同,区别在于每个颜色通道的值由所给定的 'black_color' 和 'white_color' 颜色决定(如 -fill 选项下所述)。

这实际上意味着提供给 -level-colors 的颜色会被分别映射为“黑色”和“白色”,而所有其他颜色都会被线性调整(或裁剪)以匹配该变化。每个通道都使用所指定颜色的通道值单独进行调整。

另一方面,该操作符的加号形式(+level-colors)会将图像的“黑色”和“白色”分别映射为给定的颜色,从而对图像产生朝向这些颜色的渐变(降低对比度的)着色。这也可用于将一张普通的灰度图像转换为使用所指定颜色渐变的图像。

通过提供单个颜色,并在该颜色之前或之后加上逗号分隔符,将仅替换相应的“黑”点或“白”点。但如果未提供逗号分隔符,则该给定颜色会同时用于黑点和白点,使该操作符要么围绕该颜色对图像进行阈值化处理(- 形式),要么将所有颜色设为该颜色(+ 形式)。

-limit type value

设置像素缓存的资源限制。

可从以下选项中选择:width、height、area、memory、map、disk、file、thread、throttle 或 time。

file 的值以文件数量为单位。其他限制以字节为单位。memory、map、area 和 disk 资源限制的参数可使用 SI 前缀来定义(例如 100MB)。

默认情况下,限制为 768 个文件、3GB 的图像面积、1.5GiB 内存、3GiB 内存映射以及 18.45EB 的磁盘。如果可获取相关信息,这些限制会根据您计算机上的可用资源进行相对调整。当达到任何限制时,ImageMagick 会以某种方式失败,但会尽可能尝试采取补偿措施。例如,下面的命令限制内存:

-limit memory 32MiB -limit map 64MiB

使用 -list resource 列出当前的限制。例如,我们的系统显示如下限制:

-> identify -list resource
Resource limits:
  Width: 100MP
  Height: 100MP
  Area: 25.181GB
  Memory: 11.726GiB
  Map: 23.452GiB
  Disk: unlimited
  File: 768
  Thread: 12
  Throttle: 0
  Time: unlimited

用于保存中间图像的像素存储请求,会由三类资源中的一类来满足:内存池、内存映射文件池和磁盘池(按此顺序),具体取决于 -limit 设置以及系统是否满足该资源请求。如果在给定池中已分配的像素存储总大小达到对应的限制,请求将传递给下一个池。此外,超过 area 限制的请求会自动分配到磁盘上。

为说明 ImageMagick 如何利用资源限制,考虑一个典型的图像资源请求。首先,ImageMagick 尝试在内存中分配像素。如果资源请求超过 memory 限制,或系统不满足该请求,则请求可能被拒绝。如果内存请求未被满足,像素将被分配到磁盘,并对该文件进行内存映射。然而,如果分配请求超过 map 限制,资源分配将转到磁盘。在所有情况下,如果资源请求超过 area 限制,像素会自动缓存到磁盘。如果磁盘有硬性限制,程序将失败。

在大多数情况下,您完全无需关心资源限制。ImageMagick 会选择合理的默认值,而且大多数图像不会过度占用您的计算机资源。在处理较大的图像,或在 ImageMagick 可能耗尽全部或大部分可用内存的共享系统上时,限制才会派上用场。在这种情况下,ImageMagick 的工作流程会拖慢其他进程,极端情况下甚至会使系统陷入停滞。在这种情形下,设置限制可在一定程度上保证 ImageMagick 的工作流程不会干扰计算机的其他并发使用。例如,假设您有一个处理从互联网上传图像的 Web 界面。为确保 ImageMagick 不会超过 10MiB 内存,您只需将 area 限制设为 10MiB:

-limit area 10MB

现在每当处理较大的图像时,像素会自动缓存到磁盘而非内存。这当然意味着大图像通常处理得非常慢,原因很简单:内存中的像素处理可能比磁盘上快一个数量级。由于您网站的用户可能会无意中上传一张巨大的图像进行处理,您还应当设置磁盘限制:

-limit area 10MB -limit disk 500MB

此处,如果某张图像需要超过 500MB 的磁盘存储,ImageMagick 将停止处理。

除了命令行资源限制选项外,资源还可以通过环境变量来设置。设置环境变量 MAGICK_AREA_LIMIT、MAGICK_DISK_LIMIT、MAGICK_FILE_LIMIT、MAGICK_MEMORY_LIMIT、MAGICK_MAP_LIMIT、MAGICK_THREAD_LIMIT、MAGICK_TIME_LIMIT,分别用于限制图像面积、磁盘空间、打开的文件数、堆内存、内存映射、执行线程数以及以秒为单位的最大耗用时间。

请注意,您可以相对于任何安全策略收紧限制,但不能放宽它们。

好奇的用户可以尝试在命令中添加 -debug cache,然后在生成的输出中搜索与像素缓存相关的内容,以确定像素缓存是如何分配的以及资源是如何被消耗的。高级 Linux/Linux 用户可以将该输出通过 grep memory|open|destroy|disk 进行管道处理,以便更易读地筛选。

有关 ImageMagick 资源使用的更多信息,请参阅 Architecture 页面上的 Cache Storage and Resource Requirements 一节。

-linear-stretch black-point

-linear-stretch black-point{xwhite-point}{%}

带饱和度的线性拉伸。

这与 -contrast-stretch 非常相似,使用“直方图箱(histogram bin)”来确定需要拉伸的色彩值范围。但它随后使用 -level 运算符来拉伸这些颜色。

因此,虽然初始的确定过程可能存在“分箱”舍入效应,但图像颜色是以数学方式拉伸的,而非使用直方图箱。这使得该运算符更为精确。

但请注意,-linear-stretch 取值为 “0” 时不起任何作用,而取值为 “1” 时会对色彩范围进行近乎完美的拉伸。

另请参阅 -auto-level,用于对数学图像进行“完美的”归一化。

此运算符正在评估以待重新开发。

-linewidth

后续绘制操作的线宽。

-liquid-rescale geometry

使用缝隙裁剪(seam-carving)重新缩放图像。

有关 geometry 参数的完整细节,请参阅 Image Geometry

-list type

打印各种选项或设置所支持的参数列表。可从以下列表类型中选择:

Align
Alpha
Boolean
Cache
Channel
Class
ClipPath
Coder
Color
Colorspace
Command
Complex
Compose
Compress
Configure
DataType
Debug
Decoration
Delegate
Direction
Dispose
Distort
Dither
Endian
Evaluate
FillRule
Filter
Font
Format
Function
Gravity
Intensity
Intent
Interlace
Interpolate
Kernel
Layers
LineCap
LineJoin
List
Locale
LogEvent
Log
Magic
Method
Metric
Mime
Mode
Morphology
Module
Noise
Orientation
PixelIntensity
Policy
PolicyDomain
PolicyRights
Preview
Primitive
QuantumFormat
Resource
SparseColor
Statistic
Storage
Stretch
Style
Threshold
Type
Units
Validate
VirtualPixel

这些列表会因您的 ImageMagick 版本而异。使用 "-list list" 获取所有可用 "-list" 参数的完整清单:

magick identify -list list

-log string

指定调试日志的格式。

此选项指定在 -debug 选项处于激活状态时所打印日志的格式。

您可以通过嵌入特殊格式字符来显示以下组成部分:

%d
域(domain)
%e
事件(event)
%f
函数(function)
%l
行(line)
%m
模块(module)
%p
进程 ID
%r
实际 CPU 时间
%t
挂钟时间
%u
用户 CPU 时间
%%
百分号
\n
换行符
\r
回车符

例如:

magick -debug coder -log "%u %m:%l %e" in.gif out.png

默认行为是打印所有组成部分。

-loop iterations

向您的 GIF 动画添加 Netscape 循环扩展。

将 iterations 设为零可使动画无限次重复,否则动画最多重复 iterations 次。

-lowlight-color color

比较图像时,用此颜色弱化(de-emphasize)像素差异。

-magnify

使用像素艺术缩放(pixel art scaling)将图像放大两倍或三倍。可使用 -define magnify:method=method 指定替代的缩放方法。可从以下方法中选择:eagle2X、eagle3X、eagle3XB、epb2X、fish2X、hq2X、scale2X、scale3X、xbr2X。默认值为 scale2X。

-map type

使用此类型显示图像。

可从以下标准颜色映射表(Standard Colormap)类型中选择:

best
default
gray
red
green
blue

X 服务器必须支持您所选择的标准颜色映射表,否则会发生错误。将 list 用作 type,则 display 会按从上到下的顺序搜索颜色映射表类型列表,直到找到一个为止。有关创建标准颜色映射表的一种方法,请参阅 xstdcmap(1)。

-map components

像素映射(Pixel map)。

以下是映射的有效组成部分:

r
red 像素分量
g
green 像素分量
b
blue 像素分量
a
alpha 像素分量(0 表示透明)
o
opacity 像素分量(0 表示不透明)
i
灰度强度像素分量
c
cyan 像素分量
m
magenta 像素分量
y
yellow 像素分量
k
black 像素分量
p
填充分量(始终为 0)

您可以按任意顺序指定所需数量的这些分量(例如 bgr)。这些分量也可以重复(例如 rgbr)。

-mattecolor color

指定与 -frame 选项一起使用的颜色。

颜色使用 -fill 选项下所描述的格式来指定。

默认的衬底(matte)颜色为 #BDBDBD,即这种灰色调。

-maximum

返回图像序列的最大强度。

从所有周围像素中选择“最大”值。

这是来自同名方法的遗留选项。

-median geometry

对图像应用中值滤波器。

从所有周围像素中选择“中间”值。

这是来自同名方法的遗留选项。

-mean-shift widthxheight{+distance{%}

图像噪点去除及色彩缩减/分割(例如 -mean-shift 7x7+10%)。

widthxheight 是窗口大小,distance 是以 0 到 1 或 0 到 100% 范围度量的色彩距离。

均值漂移(mean shift)算法是迭代的,因此窗口越大速度越慢。对于每个像素,它会获取以该像素为中心的窗口中的所有像素,并排除位于该像素周围 radius=sqrt((width-1)(height-1)/4) 之外的像素。从这些像素中,它找出与当前均值之间的平方色彩距离在指定范围内的那些像素。然后它根据这些坐标计算新的 x,y 质心以及新的均值。这个新的 x,y 质心被用作新窗口的中心。此过程不断迭代直至收敛,然后用最终的均值替换原始像素值。它对下一个像素重复此过程,依此类推,直到处理完图像中的所有像素。使用 RGB 以外的其他色彩空间时结果更佳。推荐使用 YIQ、YUV 或 YCbCr,它们似乎能给出相当的结果。

-metric type

根据所给定的 type 度量类型,将图像之间差异的度量值输出到 STDERR。

可从以下选项中选择:

AE
两幅图像之间像素差异的幅度(受 -fuzz 影响)
DPC
离散相位相关(discrete phase correlation)
DSSIM
结构相异性指数(structural dissimilarity index)
FUZZ
平均色彩距离
MAE
平均绝对误差(归一化),平均通道误差距离
MEPP
每像素平均误差(归一化平均误差、归一化峰值误差)
MSE
均方误差,通道误差平方的平均值
NCC
归一化互相关(normalized cross correlation)
PAE
峰值绝对(归一化峰值绝对)
PDC
两幅图像之间数值不同的像素总数(受 -fuzz 影响)
PHASE
相位相关(phase correlation)
PHASH
针对 sRGB 和 HCLp 色彩空间的感知哈希(perceptual hash)。可使用 -define phash:colorspaces=colorspace,colorspace,... 指定替代的色彩空间
PSNR
峰值信噪比(peak signal to noise ratio)
RMSE
均方根(归一化均方根)
SSIM
结构相似性指数(structural similarity index)

使用 -fuzz 因子来控制 “AE”(像素差异有多大)和 “PDC”(有多少像素不同)(忽略仅有少量变化的像素)。使用 “PAE” 可找出使所有像素“相似”所需的 -fuzz 因子大小,而 “MAE” 则确定使约一半像素相似所需的因子。

MEPP 度量在单次比较运行中返回三种不同的度量值(“MAE”、归一化的 “MAE” 以及归一化的 “PAE”)。

SSIM 和 DSSIM 度量遵循以下定义:-define compare:ssim-radius、-define compare:ssim-sigma、-define compare:ssim-k1 和 -define compare:ssim-k2。

要打印完整的度量列表,请使用 -list metric 选项。

-minimum

返回图像序列的最小强度。

从所有周围像素中选择“最小”值。

这是来自同名方法的遗留选项。

-mode geometry

使每个像素成为其邻域的“主导色(predominant color)”。'

-mode value

操作模式。

从以下样式中选择值:Frame、Unframe 或 Concatenate

使用带 'Mode' 参数的 -list 选项,可列出您的 ImageMagick 安装中可用的 -mode 参数。

-modulate brightness[,saturation,hue]

改变图像的亮度、饱和度和色相。

参数以变化的百分比给出。值为 100 表示无变化,任何缺失的值都视为 100。

亮度是图像整体亮度的乘数,因此 0 表示纯黑,50 表示亮度减半,200 表示亮度加倍。要反转其含义,可在前后对图像进行 -negate。

饱和度控制图像中的色彩量。例如,0 会产生灰度图像,而像 200 这样的大值则会产生非常鲜艳的“卡通化”色彩。

色相参数会使图像内的颜色按指定的量进行“旋转”。例如,50 会导致逆时针旋转 90°,将红色调映射为紫色,依此类推。取值为 0 或 200 都会导致图像完整旋转 180 度。取值为 300 表示旋转 360 度,结果与原始图像无变化。

例如,要将色彩亮度提高 20%、将色彩饱和度降低 10% 而色相保持不变,请使用 -modulate 120,90。

使用 -set 属性 'option:modulate:colorspace' 来指定要调制的色彩空间。可从 HCL、HCLp、HSB、HSI、HSL(默认值)、HSV、HWB 或 LCH(LCHab)中选择。例如:

magick image.png -set option:modulate:colorspace hsb -modulate 120,90 modulate.png

-moments

报告图像矩(image moments)和感知哈希(perceptual hash)。

-monitor

监控进度。

-monochrome

将图像转换为黑白。

-morph frames

对图像序列进行变形(morph)。

图像像素和尺寸都会被线性插值,从而在当前图像列表的所有图像中,呈现出从一幅图像到下一幅图像逐渐蜕变的外观。所添加的图像等同于 -blend 合成。frames 参数决定在每幅图像之间插值多少幅图像。

-morphology

-morphology method kernel

对图像应用一种形态学(morphology)方法。

请参阅 IM Usage Examples, Morphology

-mosaic

-layers 方法 "mosaic" 的简单别名

-motion-blur radius

-motion-blur radius{xsigma}+angle

模拟运动模糊。

使用给定的半径、标准差(sigma)和角度进行模糊。给定的角度是图像被模糊的朝向,也就是人们认为物体到来的方向。

请注意,该模糊并非均匀分布,从而使运动带有明确的移动方向感。

-virtual-pixel 设置将决定图像本体之外的像素如何被模糊进最终结果。

-name

为图像命名。

-negate

用每个像素的补色替换该像素。

图像的红、绿、蓝强度被取反。白色变为黑色,黄色变为蓝色,等等。使用 +negate 仅对图像的灰度像素取反。

-noise geometry

+noise type

为图像增加或减少噪声。

噪声峰值消除滤波器的主要作用是在不丢失边缘信息且不产生不需要的结构的情况下平滑图像中的对象。该算法的核心思想是:如果在一个像素窗口内某个像素被判定为噪声,则用窗口内数值上与之相邻的下一个值替换该像素。当且仅当某个像素是其所在像素窗口内的最大值或最小值时,才将其定义为噪声。

使用 -noise radius 在减少噪声时指定邻域的宽度。这等同于使用 -statistic NonPeak 操作,应优先使用后者。

使用 +noise 后接一个噪声类型来为图像添加噪声。可从以下噪声类型中选择:

Gaussian
Impulse
Laplacian
Multiplicative
Poisson
Random
Uniform

所添加噪声的量可通过 -attenuate 设置来控制。若未设置,其值等同于 1.0,即最大的噪声添加量。

请注意,Random 会用噪声替换图像,而不是向图像添加噪声。如果你希望向图像添加随机噪声,请使用 Uniform。

要打印噪声的完整列表,请使用 -list noise 选项。

另请参阅 -evaluate 噪声函数,它允许使用一个控制值来指定应向图像添加的噪声量。

-normalize

通过拉伸强度值的范围来增加图像的对比度。

强度值被拉伸以覆盖所有可能值的整个范围。在此过程中,最多将 2% 的像素变为黑色,最多将 1% 的像素变为白色。

请注意,自 ImageMagick 6.4.7-0 起,-normalize 等同于 -contrast-stretch 2%x1%。(在此版本之前,它等同于 -contrast-stretch 2%x99%。)

当使用默认的 +channel 设置时,所有通道会按相同的量协同归一化,以保持色彩完整性。指定任何其他 -channel 设置都会使 RGB 通道各自独立地归一化。

更多细节请参阅 -contrast-stretch。另请参阅 -auto-level,它提供一种“完美”的归一化,更适合数学生成的图像。

该运算符正在审查以待重新开发。

-opaque color

将图像内的此颜色更改为填充色。

color 参数使用 -fill 选项下所述的格式定义。可使用 -fuzz 设置来匹配并替换与给定颜色相近的颜色。

使用 +opaque 来涂绘任何与目标颜色不匹配的像素。

-transparent 运算符与 -opaque 完全相同,只是它用透明度替换匹配的颜色,而不是当前的 -fill 颜色设置。为确保能够做到这一点,它还会像 “-alpha set” 那样确保图像为新的透明颜色启用了 alpha 通道,并且不要求你修改 -channel 来启用 alpha 通道处理。

-ordered-dither threshold_map{,level...}

使用指定的预定义有序抖动阈值映射,以及每个颜色通道具有给定级数的均匀颜色映射,对图像进行抖动。

你可以从以下标准阈值映射中选择:

threshold   1x1   Threshold 1x1 (non-dither)
checks      2x1   Checkerboard 2x1 (dither)
o2x2        2x2   Ordered 2x2 (dispersed)
o3x3        3x3   Ordered 3x3 (dispersed)
o4x4        4x4   Ordered 4x4 (dispersed)
o8x8        8x8   Ordered 8x8 (dispersed)
h4x4a       4x1   Halftone 4x4 (angled)
h6x6a       6x1   Halftone 6x6 (angled)
h8x8a       8x1   Halftone 8x8 (angled)
h4x4o             Halftone 4x4 (orthogonal)
h6x6o             Halftone 6x6 (orthogonal)
h8x8o             Halftone 8x8 (orthogonal)
h16x16o           Halftone 16x16 (orthogonal)
c5x5b       c5x5  Circles 5x5 (black)
c5x5w             Circles 5x5 (white)
c6x6b       c6x6  Circles 6x6 (black)
c6x6w             Circles 6x6 (white)
c7x7b       c7x7  Circles 7x7 (black)
c7x7w             Circles 7x7 (white)

threshold 会生成图像的简单 50% 阈值。它可与 level 配合使用,以实现等同于 -posterize 的效果,将图像缩减为基本的原色。

checks 模式产生 3 级棋盘格抖动图案。也就是说,灰度图会变为由纯黑、纯白和中间色调组成的黑白棋盘格图案。

你可以在个人或系统的 thresholds.xml XML 文件中,为图像的有序抖动和半调定义你自己的阈值映射。有关配置文件的更多细节,请参阅 Resources

要打印已定义阈值的完整列表,请使用 -list threshold 选项。

请注意,目前所有颜色通道都使用相同的阈值抖动映射,没有尝试为不同通道偏移或旋转该映射以制造套印效果。此外,由于这些映射只是简单的阈值级别,半调和圆形映射会在彩色区域的边缘产生不完整的圆形。同样,所有效果都是纯粹的开/关布尔效果,没有抗锯齿来使圆形看起来平滑。大点可以在创建后通过少量模糊来改善外观。

-orient image orientation

指定数码相机图像的方向。

请注意,这是一项设置。它仅设置方向元数据,并不会更改图像。

以下是允许的方向,以及如何重新调整图像方向的 EXIF 代码和说明:

Undefined
无标签:未定义
top-left
1:不执行任何操作
top-right
2:水平翻转
bottom-right
3:旋转 180 度
bottom-left
4:垂直翻转
left-top
5:旋转 90 度并水平翻转(转置)
right-top
6:旋转 90 度
right-bottom
7:旋转 90 度并垂直翻转(反转置)
left-bottom
8:旋转 270 度

要打印方向的完整列表,请使用 -list orientation 选项。

-page geometry

-page media[offset][{^!<>}]
+page

在更大的虚拟画布上设置图像的尺寸和位置。

有关 geometry 参数的完整细节,请参阅 Image Geometry

为方便起见,你可以使用 media(见下文)来指定页面尺寸。然后可像其他几何参数一样添加偏移量(例如 -page Letter+43+43)。

使用 media 作为简写来指定 PostScript 页面(以每英寸点数为单位)或 TEXT 页面(以像素为单位)的尺寸(widthxheight)。纸张尺寸的可选项有:4x6、5x7、7x9、8x10、9x11、9x12、10x13、10x14、11x17、4A0、2A0、a0、a1、a2、a3、a4、a4small、a5、a6、a7、a8、a9、a10、archa、archb、archC、archd、arche、b0、b1、b10、b2、b3、b4、b5、b6、b7、b8、b9、c0、c1、c2、c3、c4、c5、c6、c7、csheet、dsheet、esheet、executive、flsa、flse、folio、halfletter、isob0、isob1、isob10、isob2、isob3、isob4、isob5、isob6、isob7、isob8、isob9、jisb0、jisb1、jisb2、jisb3、jisb4、jisb5、jisb6、ledger、legal、letter、lettersmall、monarch、quarto、statement、tabloid。要确定在 72DPI 下对应的像素尺寸,例如可使用此命令:

magick xc: -format "%[papersize:a4]" info:

此选项还用于在写入支持偏移的多图像格式(如 GIF89 和 MNG)时放置子图像。当用于此目的时,偏移量始终从画布的左上角测量,且不受 -gravity 选项的影响。要定位 GIF 或 MNG 图像,请使用 -page{+-}x{+-}y(例如 -page +100+200)。写入 MNG 文件时,若在序列中第一个图像之前出现的 -page 选项具有非零的宽度和高度,则定义写入 MHDR 块中的宽度和高度值。否则,MNG 的宽度和高度由包含序列中所有图像的边界框计算得出。写入 GIF89 文件时,仅使用边界框方法来确定其尺寸。

对于 PostScript 页面,图像的尺寸按 -geometry 设置,但相对于页面左下角以 {+-}xoffset{+-}y offset 定位。例如,使用 -page 612x792 将图像在页面内居中。如果图像尺寸超过 PostScript 页面,则将其缩小以适应页面。-page 选项的默认重心是 NorthWest,即正的 x 和 y 偏移量从页面左上角向右和向下测量,除非存在值不为 NorthWest 的 -gravity 选项。

TEXT 图像的默认页面尺寸为 612x792。

此选项与 -density 配合使用。

使用 +page 移除图像的页面设置。

要打印页面尺寸的完整列表,请使用 -list pagesize 选项。

-paint radius

模拟油画效果。

每个像素都被替换为以 radius 指定宽度的圆形邻域内最常出现的颜色。

-path path

将图像写入磁盘上的此路径。

-pause seconds

在动画循环之间暂停

在重复动画之前暂停指定的秒数。

-pause seconds

在快照之间暂停。

在拍摄下一张快照之前暂停指定的秒数。

-perceptible epsilon

将每个值小于 |epsilon| 的像素设为 -epsilon 或 epsilon(取较接近者),否则该像素值保持不变。

-ping

高效地确定以下图像特征:图像编号、文件名、图像的宽度和高度、图像是否为颜色映射图、图像中的颜色数量、图像中的字节数、图像的格式(JPEG、PNM 等)。使用 +ping 以确保获得准确的图像属性。

-pointsize value

PostScript、X11 或 TrueType 字体的磅值(pointsize)。

-polaroid angle

模拟宝丽来照片效果。

使用 +polaroid 将图像旋转 -15 到 +15 度之间的随机角度。

-poly "wt,exp ..."

根据多项式的加权和组合多个图像;为每个图像指定一个浮点权重(系数)和一个浮点多项式指数(幂),以逗号分隔的对的形式表示。

权重通常应为 -1 到 1 之间的分数。但权重之和应为 1,或者至少介于 0 和 1 之间,以避免在非 hdri 模式下被钳制在黑白两端。

指数可以为正、为负或为零。负指数等同于 1 除以图像的相应正指数次幂。零指数始终产生 1 乘以 quantumrange 缩放后的白色,即 wt*white,无论图像如何。

格式为:output = wt1image1^exp1 + wt2image2^exp2 ...

一些简单的用法是:

  • 各图像的加权和,前提是所有权重之和为 1 且所有指数=1。如果所有权重都等于 1/(图像数量),则这等同于 -evaluate-sequence mean。
  • 两个或多个图像的平方和,前提是权重相等(且和为 1 以避免钳制)且指数等于 2。

请注意,只需将其中一个图像用作 xc:somecolor 并将所需权重指定为某值、指数指定为 0,即可向表达式中添加一个常量颜色。

类似地,只需将其中一个图像用作 null:(或 xc:white)并使用适当的权重、指数等于 0,即可向表达式中添加白色。

-posterize levels

将图像缩减为每通道有限数量的颜色级别。

非常低的 levels 值(例如 2、3、4)效果最为明显。

-precision value

设置要打印的有效数字的最大位数。

-preview type

图像预览类型。

使用此选项来影响图像的预览操作(例如 magick file.png -preview Gamma Preview:gamma.png)。可从以下预览中选择:

AddNoise
Blur
Brightness
Charcoal
Despeckle
Dull
EdgeDetect
Gamma
Grayscale
Hue
Implode
JPEG
OilPaint
Quantize
Raise
ReduceNoise
Roll
Rotate
Saturation
Segment
Shade
Sharpen
Shear
Solarize
Spiff
Spread
Swirl
Threshold
Wave

要打印预览的完整列表,请使用 -list preview 选项。

默认预览为 JPEG。

-print string

解释 string 并打印到控制台。

-process command

使用自定义图像滤镜处理图像。

command 参数的形式为 "module arg1 arg2 arg3 ... argN",其中 module 是要调用的模块的名称(例如 "Analyze"),而 arg1 arg2 arg3 ... argN 是传递给处理模块的任意数量的参数。

-profile filename

+profile profile_name

管理图像中的 ICM、IPTC 或通用配置文件。

使用 -profile filename 可向图像添加 ICM(ICC 色彩管理)、IPTC(新闻通讯信息)或通用配置文件。

使用 +profile profile_name 可移除指定的配置文件。ImageMagick 使用标准的文件名通配,因此可以使用通配符表达式一次移除多个配置文件。这里我们移除图像中除 XMP 配置文件以外的所有配置文件:+profile "!xmp,*"。

使用 magick identify -verbose 可查看图像文件中包含哪些配置文件。使用 -strip 可移除所有配置文件(以及注释)。

要提取配置文件时,不使用 -profile 选项。而是直接将文件写入诸如 APP1、8BIM、ICM 或 IPTC 之类的图像格式即可。

例如,要提取 Exif 数据(在 JPEG 文件中存储于 APP1 配置文件中),使用如下命令。

设置 -define precision:highres-transform=true 可提高变换的精度。请注意,由于高精度变换使用浮点数而非无符号整数,会有轻微的性能损失。

magick cockatoo.jpg profile.exif

需要重要注意的是,结果可能取决于原始图像是否已经包含配置文件。此外,请记住 -profile 是一个“运算符”(与“设置”相对),因此每当它在命令行中按顺序被遇到时都会执行一次转换。例如,在下面的示例中,如果原始图像是带配置文件的 CMYK,将会发生 CMYK-CMYK-RGB 的转换。

magick CMYK.tif -profile "CMYK.icc" -profile "RGB.icc" RGB.tiff

此外,由于 ICC 配置文件不一定是对称的,额外的转换步骤可能产生不希望的结果。CMYK 配置文件通常非常不对称,因为它们涉及 3−>4 和 4−>3 的通道映射。

-quality value

控制在创建或保存 JPEG、PNG、HEIC 和 WebP 图像文件时的压缩质量。该选项对于管理图像质量与文件大小之间的权衡非常重要。

对于 JPEG 和 MPEG 图像格式,质量范围为 1(最低图像质量、最高压缩)到 100(最佳质量但压缩效果最差)。默认情况下,如果能够确定输入图像的估计质量,则使用该值,否则为 92。当质量为 90 或更高时,色度通道不会被下采样。使用 -sampling-factor 选项可指定色度下采样的因子。

对于 JPEG-2000 图像格式,质量通过一个非线性方程映射到 Jasper 库所需的压缩比。该非线性方程旨在大致近似 JPEG v1 格式所提供的质量。默认质量值为 100,即请求无损压缩。质量为 75 时请求 16:1 的压缩。

对于 MNG 和 PNG 图像格式,质量值设置 zlib 压缩级别(quality / 10)和滤波类型(quality % 10)。PNG 的默认“质量”为 75,意味着压缩级别 7 并使用自适应 PNG 滤波,除非图像带有颜色映射表,此时表示压缩级别 7 且不使用 PNG 滤波。

对于压缩级别 0(质量值小于 10),使用仅 Huffman 策略,它最快但不一定是最差的压缩。

如果滤波类型为 4 或更小,则指定的 PNG 滤波类型用于所有扫描行:

0
none
1
sub
2
up
3
average
4
Paeth

如果滤波类型为 5,则在质量大于 50 且图像没有颜色映射表时使用自适应滤波,否则不使用滤波。

如果滤波类型为 6,则使用基于绝对值最小和的自适应滤波。

仅当输出为 MNG 时,如果滤波类型为 7,则使用 LOCO 色彩变换(像素内差分)以及基于绝对值最小和的自适应滤波。

如果滤波类型为 8,则使用 zlib Z_RLE 压缩策略(或当压缩级别为 0 时使用 Z_HUFFMAN_ONLY 策略),并配合自适应 PNG 滤波。

如果滤波类型为 9,则使用 zlib Z_RLE 压缩策略(或当压缩级别为 0 时使用 Z_HUFFMAN_ONLY 策略),且不使用 PNG 滤波。

质量设置对 PNG 和 MNG 图像的外观或签名没有影响,因为其压缩始终是无损的。

并非所有压缩级别、策略和 PNG 滤波类型的组合都能通过 -quality 选项获得。要进行更精确的控制,可以分别使用 PNG:compression-level=N、PNG:compression-strategy=N 和 PNG:compression-filter=N 这些 define 来替代。参见 -define。来自 define 的值优先于来自 -quality 选项的值。

更多信息请参见 PNG 规范。

对于 MIFF 和 TIFF 图像格式,quality/10 即 Zip/BZip 压缩级别,范围为 0(最差但最快的压缩)到 9(最佳但最慢)。它对图像外观没有影响,因为其压缩始终是无损的。

对于 BPG 图像格式,quality/2 即实际的 BPG 压缩级别(范围为 0 到 51)。

-quantize colorspace

使用此色彩空间来减少颜色。

此设置定义用于整理并减少图像所需颜色数量(以供后续抖动)的色彩空间,供诸如 -colors 之类的运算符使用。请注意,当将图像保存为颜色受限的图像文件格式(如 GIF 和 PNG8)时,颜色减少也会自动发生。

-quiet

抑制所有警告消息。错误消息仍会被报告。

-virtual-pixel 设置将决定图像本体之外的像素如何被模糊到最终结果中。

-raise thickness

加亮或加深图像边缘。

这将创建一种 3D 效果。使用 -raise 创建凸起效果,否则使用 +raise。

与类似的 -frame 选项不同,-raise 不会改变图像的尺寸。

-random-threshold lowxhigh

对图像应用随机阈值。

-range-threshold low-black,low-white,high-white,high-black

在图像中某个数值范围内执行硬阈值化或软阈值化。

-read filename

显式读取图像,而非隐式读取。

此选项允许你从以“选项”字符开头的文件名读取,否则这些文件名可能被误认为是选项(无论已知与否)。

-read-mask filename

阻止对掩码所指定的图像像素进行更新。

这与用于合成掩码操作的掩码相同,灰度值会导致对掩码所附加图像进行混合更新。

使用 +read-mask 可从图像中移除掩码。

另请参见 -clip-mask,它的工作方式相同,但使用严格的布尔掩码。

-red-primary x,y

设置红色色度基色点。

-regard-warnings

关注警告消息。

此选项会使某些图像格式中的某些警告被视为错误。

-remap filename

将图像中的颜色数量减少到此图像所使用的颜色。

如果启用了 -dither 设置(默认启用),则给定的颜色会根据需要在图像上进行抖动,否则会选择最接近的颜色(在 RGB 色彩空间中)来替换图像中的该像素。

对当前图像序列中所有图像应用 -remap 颜色的一个副作用是,所有图像都将拥有相同的颜色表。这意味着当保存为诸如 GIF 之类的文件格式时,它会将该颜色表用作所有图像的单个公共或全局颜色表,而无需额外的本地颜色表。

使用 +remap 可将当前图像序列中的所有图像减少为在所有图像上使用一个公共颜色映射表。这等同于将所有图像拼接在一起(不添加额外的背景色),用 -colors 以 256 色上限对这些图像进行颜色减少,然后对原始图像列表 -remap 这些颜色。这可确保所有图像遵循单一颜色映射表。

如果所有图像上的颜色总数少于 256,则 +remap 不应执行任何颜色减少或抖动,因为不需要任何颜色更改。在这种情况下,它唯一的作用是强制使用全局颜色表。建议在使用 -colors 或 -ordered-dither 减少动画图像序列中的颜色数量之后使用此选项。

请注意,remap 图像的颜色映射表最多具有 8 位精度。更深的颜色映射表会被自动与其他颜色合并以满足此要求。

-region geometry

设置一个区域,后续操作将在其中应用。

x 和 y 偏移量的处理方式与 -crop 中相同。

有关 geometry 参数的完整细节,请参见 Image Geometry

使用 +region 可移除任何先前设置的区域。

-remote

执行远程操作。

唯一可识别的命令是要加载的图像文件的名称。

如果你同时运行多个 display 应用程序,请使用 window 选项指定要控制哪个应用程序。

-render

渲染矢量操作。

使用 +render 可关闭矢量操作的渲染。当将结果保存为诸如 MVG 或 SVG 之类的矢量格式时,这很有用。

-repage geometry

调整图像的画布和偏移信息。

此选项类似于 -page,但作为图像运算符而非设置发挥作用。你可以仅提供这些分量,从而分别设置画布大小或图像在该画布上的偏移。

有关 geometry 参数的完整细节,请参见 Image Geometry

如果给出 ! 标志,则给定的偏移量会被加到现有偏移量上,以相对于图像先前位置移动图像。这对动画序列很有用。

给定一个为零的画布大小(如 '0x0')会强制重新计算画布大小,使图像(在其当前偏移处)能完整显示在该画布上(除非它具有负偏移)。

使用 +repage 可完全移除/重置图像中的虚拟画布元数据。

可以使用 -set 'page' 选项直接指定虚拟画布元数据。

-resample horizontalxvertical

将图像重采样到指定的水平和垂直分辨率。

调整图像尺寸,使其在指定目标分辨率下的渲染大小与原图保持一致。例如,若一幅 300 DPI 图像在 300 DPI 设备上渲染为 3 英寸乘 2 英寸,当该图像被重采样为 72 DPI 后,它将在 72 DPI 设备上渲染为 3 英寸乘 2 英寸。请注意,只有少数图像格式(如 JPEG、PNG 和 TIFF)能够存储图像分辨率。对于不支持图像分辨率的格式,必须在命令行上指定重采样分辨率之前通过 -density 指定图像的原始分辨率。

请注意,Photoshop 通过专有的嵌入式配置文件来存储和获取图像分辨率。如果图像中存在此配置文件,则 Photoshop 会继续按其原先的分辨率处理该图像,而忽略标准文件头中指定的图像分辨率。

-reshape geometry

重塑图像。

-resize geometry

调整图像尺寸。

有关 geometry 参数的完整细节,请参见 Image Geometry。geometry 字符串中如果存在偏移量,则会被忽略,且 -gravity 选项无效。

如果 -filter 选项或 -define filter:option=value 出现在 -resize 选项之前,则图像会使用指定的正交滤波器进行调整尺寸。

许多图像处理算法假定你的图像采用线性光编码。如果你的图像经过伽马校正,你可以先移除非线性伽马校正,应用变换,然后再恢复它,如下所示:

magick portrait.jpg -gamma .45455 -resize 25% -gamma 2.2  \
  -quality 92 passport.jpg

请注意,某些重采样函数是对 Sinc 函数近似的阻尼振荡。因此,如果你使用的 ImageMagick 版本启用了 HDRI,你可能会得到负向波瓣。要消除它们,请在命令行中添加 -clamp。

-respect-parentheses

设置在括号边界之前一直有效。

-reverse

反转当前图像列表中图像的顺序。

-roll {+-}x{+-}y

按给定的量在垂直或水平方向上滚动图像。

负的 x 偏移量将图像从右向左滚动。负的 y 偏移量将图像从下向上滚动。

-rotate degrees{<}{>}

对图像应用 Paeth 图像旋转(使用错切操作)。

使用 > 仅在图像宽度超过高度时旋转图像。< 仅在图像宽度小于高度时旋转图像。例如,如果你指定 -rotate "-90>" 且图像尺寸为 480x640,则图像不会被旋转。然而,如果图像为 640x480,则会被旋转 -90 度。如果你使用 > 或 <,请将其用引号括起来,以防止它被误解为文件重定向。

旋转图像后角落里残留的空三角形会用背景色填充。

另请参见 -distort 运算符,特别是其 'ScaleRotateTranslate' 变形方法。

图像的 page 或虚拟画布信息也会被旋转。如果不需要虚拟画布页面信息,请使用 +repage 将其移除。

-rotational-blur angle

围绕图像中心进行模糊。

此操作以前称为 "-radial-blur"。

-sample geometry

分别通过像素子采样和像素复制来缩小/放大图像。

直接通过对原图像的像素进行采样来简单地更改图像大小。放大时,像素以块为单位被复制。缩小时,像素被子采样(即跳过某些行和列)。

因此其结果等同于使用 -resize 并将 -filter 设置为 point(最近邻),不过 -sample 要快得多,因为它避免了对图像的所有滤波处理。因此它完全忽略当前的 -filter 设置。

-sample 的关键特性在于不会向结果图像添加新颜色,尽管某些颜色可能会消失。

有关 geometry 参数的完整细节,请参见 Image Geometry。geometry 字符串中如果存在偏移量,则会被忽略,这与 -resize 不同。

实际的采样点是被采样子区域的中间。因此对图像进行单像素采样会取中间像素(如果图像尺寸为偶数则取左上偏中的像素)。不过可以设置 -define 'sample:offset' 将此位置修改为每个被采样子区域内的其他位置,以百分比偏移表示。

默认情况下该值为 '50',即中点,但可以设置为 '0' 表示左上,'100' 表示右下,或使用单独的 X 和 Y 偏移量,例如 '0x50' 表示采样子区域的左中边缘。

-sampling-factor horizontal-factorxvertical-factor

JPEG 或 MPEG-2 编码器以及 YUV 解码器/编码器所使用的采样因子。

此选项指定 JPEG 编码器用于色度下采样的采样因子。如果省略此选项,JPEG 库将使用其自身的默认值。读取或写入 YUV 格式以及写入 M2V(MPEG-2)格式时,使用 -sampling-factor 2x1 或 -sampling-factor 4:2:2 来指定 4:2:2 下采样方法。

-scale geometry

分别通过像素块平均和像素复制来缩小/放大图像。

仅通过在缩小时将像素平均在一起来替换像素,或在放大时复制像素来更改图像尺寸。

因此其结果等同于将 -resize 与 box 的 -filter 设置一起使用。不过它快得多,因为它避免了图像的所有滤镜处理。因此它会完全忽略当前的 -filter 设置。

如果在收缩(缩小)图像时,原始图像尺寸是新图像尺寸的某个整数倍,那么为生成新像素颜色而平均在一起的像素数量在整幅图像上是相同的。这是一种被称为“合并(binning)”的特殊情况,常被用作降低图像噪声的方法,例如降低数码相机所生成图像的噪声,尤其是在弱光条件下。

-scene value

设置场景编号。

此选项设置某个图像的场景编号,或图像序列中第一幅图像的场景编号。

-screen

指定要捕获的屏幕。

此选项表示用于获取图像的 GetImage 请求应在根窗口上执行,而不是直接在指定窗口上执行。这样,你可以获取与指定窗口重叠的其他窗口的片段,更重要的是,你可以捕获那些属于独立窗口但显示在指定窗口之上的菜单或其他弹出窗口。

-script filename

将控制权转移到指定的文件。

-seed

为新的伪随机数序列设定种子

-segment cluster-thresholdxsmoothing-threshold

对图像的颜色进行分割。

通过分析颜色分量的直方图,并使用模糊 c 均值技术识别出同质的单元,来对图像进行分割。这是 ImageMagick 颜色量化例程的一部分。

将聚类阈值指定为:每个聚类中必须超过该聚类阈值才被视为有效的像素数量。平滑阈值用于消除直方图二阶导数中的噪声。随着该值增大,可以预期得到更平滑的二阶导数。默认值为 1.5。

如果定义了 -verbose 设置,则会返回有关颜色聚类的详细报告。

-selective-blur radius

-selective-blur radius{xsigma}{+threshold}

选择性地模糊对比度在阈值范围内的像素。

模糊那些对比度小于或等于该阈值的像素。该阈值可以表示为 QuantumRange 的一个分数,或表示为百分比。

sigma 值是重要的参数,它决定了实际将发生的模糊量。

radius 仅用于确定保存所计算的高斯分布的数组大小。它应为整数。如果未给定或设置为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

-separate

将一个图像通道分离为一幅灰度图像。使用 -channel 指定通道。

-sepia-tone percent-threshold

模拟棕褐色调(sepia)照片。

将阈值指定为强度的百分比阈值(0 - 99.9%)。

此选项对图像应用一种特殊效果,类似于在照片暗房中通过棕褐色调处理所达到的效果。阈值范围从 0 到 QuantumRange,是棕褐色调处理程度的度量。阈值为 80% 是获得合理色调的一个良好起点。

-set key value

+set key

为当前图像序列中的图像设置图像属性(attribute)和属性(property)。

这将为当前图像序列中的所有图像指定(或修改)附加到其上的特定设置。使用该选项的 +set 形式会视情况移除该设置,或将其重置为默认状态。

例如,它会修改特定的、众所周知的图像元数据“属性(attribute)”,例如通常由以下选项覆盖的那些:-delay、-dispose、-page、-colorspace;这些一般在图像读入之前,通过使用同名的 key 来指定。

如果给定的 key 与某个特定的已知“属性(attribute)”(如上所示)不匹配,则该设置会被存储为自由格式的“属性(property)”字符串。此类设置会在 -verbose 信息(“info:”输出格式)中作为“Properties”列出。

这包括通过选项 -comment、-label、-caption 设置并指定给图像的字符串“属性(property)”。这些选项实际上指定的是一个全局“artifact”,在图像读入时会自动指定给图像(并展开任何 格式百分号转义)。例如:

$ magick rose: -set Comment 'Rose is a rose is a rose is a rose' rose.jpg
identify -format %c rose.jpg
Rose is a rose is a rose is a rose

设置的值也可以在所定义的值中使用 格式化与打印图像属性。例如:

$ magick rose: -set origsize '%wx%h' -resize 50% \
  -format 'Old size = %[origsize]  New size = %wx%h' info:
Old size = 70x46  New size = 35x23

其他可用的众所周知的“属性(property)”包括:date:timestamp、date:create、date:modify 和 signature。

-repage 运算符也允许你修改内存中已有图像的“page”属性(另见 -page)。不过它的设计目的是对该“属性(attribute)”的子部分提供更精细的控制。而 -set page 选项仅对“page”属性进行直接的、未经修改的赋值。

此选项还可以将一个色彩空间或配置文件(profile)与你的图像相关联。例如,

magick image.psd -set profile ISOcoated_v2_eci.icc image-icc.psd

某些“属性(property)”必须以特定方式定义才能使用。例如,只有以“filename:”为前缀的“属性(property)”才能用于修改图像的输出文件名。例如

magick rose: -set filename:mysize '%wx%h' 'rose_%[filename:mysize].png'

如果设置的值以“option:”为前缀,则该设置将作为全局“Artifact”保存,就如同它是用 -define 选项设置的一样。由于此类设置的作用域是全局的,因此它们可用于传递某一特定图像的“属性(attribute)”和“属性(property)”,从而让你能够在一幅完全不同的图像中使用它们,即使原始图像早已被修改或销毁。例如:

magick rose:  -set option:rosesize '%wx%h' -delete 0 \
  label:'%[rosesize]'   label_size_of_rose.gif"

请注意,仅当给定的 key 与现有“属性(attribute)”或“属性(property)”都不匹配时,格式百分号转义才会匹配某个“artifact”。

你可以通过为值添加 registry: 前缀来设置图像注册表的属性。

-set profile 选项还可用于将先前已格式化的辅助 chunk 注入到输出 PNG 文件中,方法是使用如下所示的命令行选项,或通过编程接口设置 profile:

magick in.png -set profile PNG-chunk-x:<filename> out.png

其中 x 是位置标志,filename 是一个文件,该文件的前 4 个字节为 chunk 名称,随后是一个冒号(“:”),再后面是 chunk 数据。此编码器将计算 chunk 的长度和 CRC,因此这些内容不得包含在文件中。

“x”可以是“b”(在 PLTE 之前)、“m”(中间,即在 PLTE 和 IDAT 之间)或“e”(末尾,即在 IDAT 之后)。如果你想写入多个相同类型的 chunk,则在“x”后添加一个简短的唯一字符串,以防止后续的 profile 覆盖前面的 profile,例如:

magick in.png -set profile PNG-chunk-b01:file01 \
  -profile PNG-chunk-b02:file02 out.png

-shade azimuthxelevation

使用远处光源对图像进行着色。

将 azimuth 和 elevation 指定为光源的位置。使用 +shade 可将着色结果作为灰度图像返回。

-shadow percent-opacity{xsigma}{+-}x{+-}y{%}

模拟图像阴影。

-shared-memory

使用共享内存。

此选项指定该工具是否应尝试为像素图(pixmap)使用共享内存。ImageMagick 必须在编译时启用共享内存支持,并且显示设备必须支持 MIT-SHM 扩展。否则,此选项将被忽略。默认值为 True。

-sharpen radius

-sharpen radius{xsigma}

锐化图像。

使用具有给定半径和标准差(sigma)的高斯算子。

sigma 值是重要的参数,它决定了实际将发生的锐化量。

radius 仅用于确定保存所计算的高斯分布的数组大小。它应为整数。如果未给定或设置为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

-shave geometry

从图像边缘削去像素。

geometry 参数的尺寸部分指定要从图像两侧移除的区域宽度,以及要从顶部和底部移除的区域高度。偏移量将被忽略。

有关 geometry 参数的完整细节,请参阅 图像几何

-shear Xdegrees[xYdegrees]

沿 x 轴和/或 y 轴对图像进行错切(shear)。

错切角度可以为正、负或零。当省略 Ydegrees 时,它默认为 Xdegrees。当同时给定两个角度时,错切的水平分量在垂直分量之前执行。

错切使图像的一条边沿 x 轴或 y 轴滑动(即分别为水平或垂直方向),从而形成一个平行四边形。每个方向的错切量由各自的错切角度控制。对于水平错切,Xdegrees 是相对于“上方”(负 y 轴)按顺时针测量的,当 0°<Xdegrees<90° 时将顶边向右滑动,当 90°<Xdegrees<180° 时向左滑动。对于垂直错切,Ydegrees 是相对于“右方”(正 x 轴)按顺时针测量的,当 0°<Ydegrees<90° 时将右边向下滑动,当 90°<Ydegrees<180° 时向上滑动。

错切图像后剩下的空三角形将以 -background 选项所定义的颜色填充。该颜色使用 -fill 选项下所述的格式来指定。

水平错切在垂直部分之前执行。请务必注意这一点,因为水平错切与垂直错切不可交换,即在一系列错切中顺序很重要。例如,以下两条命令并不等价。

magick logo: -shear 20x0 -shear 0x60 logo-sheared.png
convert logo: -shear 0x60 -shear 20x0 logo-sheared.png

上面两条命令中的第一条与下面这条命令等价,区别仅在于所产生的空白空间数量;下面这条命令生成的图像更小,因此在时间和空间方面是更好的选择。

magick logo: -shear 20x60 logo-sheared.png

-sigmoidal-contrast contrastxmid-point

在不使高光或阴影饱和的情况下增大对比度。

使用 S 形(sigmoidal)传递函数增大图像对比度,而不使高光或阴影饱和。contrast 表示要增大对比度的程度。例如,0 表示无,3 是典型值,20 则很大。

mid-point 表示对比度中最大变化“斜率”应落在结果图像中的位置(0 为白色;50% 为中灰;100% 为黑色)。

默认情况下会增大图像对比度,使用 +sigmoidal-contrast 可减小对比度。

要实现等同于 S 形亮度变化(类似于伽马调整)的效果,你需要使用 -sigmoidal-contrast {brightness}x0% 来增大亮度,使用 +sigmoidal-contrast {brightness}x0% 来减小亮度。请注意,S 形曲线的中点处使用了“0”。

使用非常高的对比度会产生图像的一种“平滑阈值化”效果。它不像真正的阈值化那样锐利(具有高度的混叠效应),而是在阈值中点周围带有逐渐过渡的灰度级别。

-silent

静默运行。此选项仅由 import 工具使用。

-similarity-threshold value

子图像匹配的最小 RMSE。

如果使用此设置,则搜索一旦找到某个度量值小于或等于该值的匹配项就会停止。这将产生一幅部分填充的第二输出图像。使用值为零,将使搜索在找到第一个完全匹配时停止。如果不设置此项,则搜索将一直进行到完成,或受 -dissimilarity-threshold 的限制。

-size width[xheight][+offset]

设置图像的宽度和高度。

使用此选项来指定尺寸未知的原始图像(如 GRAY、RGB 或 CMYK)的宽度和高度。除了宽度和高度之外,还可以将 -size 与偏移量一起使用,以跳过图像中的任何头部信息,或指明 MAP 图像文件中的颜色数(例如 -size 640x512+256)。

对于 Photo CD 图像,请从以下尺寸中选择:

192x128
384x256
768x512
1536x1024
3072x2048

-sketch radius

-sketch radius{xsigma}+angle

模拟铅笔素描。

以给定的半径、标准差(sigma)和角度进行素描。给定的角度是图像被素描所朝向的角度。也就是人们会认为物体来自的方向。

-smush offset

将图像序列拼接在一起,并忽略透明度。

Smush 是 -append 的一个更灵活的版本,它将序列中的图像自上而下(-smush)或自左而右(+smush)连接,并根据指定的偏移量在图像之间留出间隙。

如果偏移量为负,则图像会按该数量重叠。

-smush 遵循 -gravity。任何空白空间都将以 -background 颜色填充。

对于零偏移量和透明图像,两幅图像的非透明部分将在不重叠的前提下尽可能紧密地对齐。

-snaps value

设置屏幕快照的数量。

使用此选项可从 X 服务器屏幕抓取多幅图像,以创建动画序列。

-solarize percent-threshold

对高于该阈值级别的所有像素取反。

将 factor 指定为强度的百分比阈值(0 - 99.9%)。

此选项会产生一种曝光过度(solarization)效果,类似于在显影过程中将照相胶片暴露于光线时所见到的效果。

-sort-pixels

将每条扫描线内的像素按强度升序排序。

-sparse-color method 'x,y color ...'

使用指定的颜色点为给定图像着色,并使用给定的方法填充其他位于中间的颜色。

barycentric
由 3 个点给出的三点三角形颜色。仅给出 2 个点将在这两点之间形成线性渐变。生成的渐变会延伸到由这 3 个点构成的三角形之外。
bilinear
类似于 barycentric,但用于 4 个点。少于 4 个点时回退到 barycentric。
voronoi
简单地将每个像素映射到给定的最近颜色点。结果是由纯色构成的多边形“单元”。
manhattan
类似于 voronoi,但生成的多边形“单元”被映射到固定的坐标系。
shepards
颜色点按反距离平方的比率进行加权。在各颜色平均值的海洋中生成颜色斑点。
inverse
颜色点按反距离的比率进行加权。这会生成更锐利的颜色点,而不是 'shepards' 那种圆润的斑点。在各颜色平均值的海洋中生成颜色斑点。

这些点根据图像在虚拟画布上的位置(-page 或 -repage 偏移量)放置,实际上不必存在于给定图像之上,而可以是图像边缘之外的某个点。所有点都是浮点值。

只有由 -channel 定义的颜色通道会被修改,这意味着默认情况下不会影响蒙版/alpha 透明度通道。通常会在操作之前或之后关闭透明度通道。

当然,如果某些颜色点是透明的以生成透明渐变,那么图像也需要启用透明度来存储这些值。

上述所有方法在仅给出单个颜色点时,将用给定的颜色替换图像中的所有颜色,而不论该点的位置。这是合理的,并提供了一种将图像重新着色为某个默认值的替代技术。

-splice geometry

将当前背景色拼接到图像中。

这将根据给定的 -gravity geometry 设置,把当前 -background 色的行和列添加到给定图像中。有关 geometry 参数的完整细节,请参阅 Image Geometry。本质上,-splice 会将图像划分为四个象限,并用插入的行和列将它们分隔开。

如果 geometry 的某个维度为零,则不会为该维度添加任何行或列。同样,使用零偏移量并配合适当的 -gravity 设置,会将行和列添加到图像的边缘,仅沿该一条边对图像进行填充。边缘填充正是 -splice 最常见的用途。

如果之后对 -chop 使用完全相同的 geometry 和 -gravity,则添加的所有拼接都会被移除。

-spread amount

将图像像素随机移位一定的量。

参数 amount 定义了每个像素周围邻域的大小,从该邻域中选取一个候选像素进行混合。

该查找过程由 -interpolate 设置控制。

-statistic type geometry

用邻域中对应的统计量替换每个像素。

从以下统计类型中选择:

Contrast
邻域中的最大差值(max - min)除以(max + min)值
Maximum
邻域中每个通道的最大值
Gradient
邻域中的最大差值(max - min)
Maximum
邻域中每个通道的最大值
Minimum
邻域中每个通道的最小值
Mean
邻域中每个通道的平均值
Median
邻域中每个通道的中值
Mode
邻域中每个通道的众数(出现最频繁的值)
Nonpeak
邻域中每个通道恰好位于中值之前或之后的值
RMS
邻域中每个通道的均方根值
StandardDeviation
邻域中每个通道的标准差值

-stegano offset

在图像中隐藏水印。

使用 offset 从图像起始处的若干像素之后开始隐藏图像。请记下这个偏移量和图像尺寸。你将需要这些信息来恢复隐写图像(例如 display -size 320x256+35 stegano:image.png)。

-stereo +x{+y}

合成两幅图像以创建红/青立体红蓝立体图(anaglyph)。

立体对的左侧图像(第二幅图像)被保存为输出图像的红色通道。右侧图像(第一幅图像)被保存为绿色和蓝色通道。需要红绿立体眼镜才能正确观看该立体图像。

-storage-type type

像素存储类型。以下是有效的类型:

char
无符号字符
double
双精度浮点数
float
单精度浮点数
integer
整数
long
长整数
quantum
采用你的 ImageMagick 发行版原生深度的像素
short
无符号短整数

Float 和 double 类型被归一化到 0.0 至 1.0,否则像素值的范围为 0 到该存储类型所能支持的最大值。

-stretch fontStretch

为字体设置一种拉伸样式。

此设置建议 ImageMagick 应尝试对当前所选字体族应用的拉伸类型。从以下选项中选择 fontStretch。

Any
Condensed
Expanded
ExtraCondensed
ExtraExpanded
Normal
SemiCondensed
SemiExpanded
UltraCondensed
UltraExpanded

要打印完整的拉伸类型列表,请使用 -list stretch。

有关影响字体的其他设置,请参阅选项 -font、-family、-style 和 -weight。

-strip

剥离图像中的所有配置文件、注释或以下这些 PNG 块:bKGD,cHRM,EXIF,gAMA,iCCP,iTXt,sRGB,tEXt,zCCP,zTXt,date。要移除方向块 orNT,请将方向设置为 undefined,例如 -orient Undefined。

-stroke color

描绘图形基元时使用的颜色。

颜色使用 -fill 选项下所述的格式指定。

更多细节请参阅 -draw。

-strokewidth value

设置描边宽度。

更多细节请参阅 -draw。

-style fontStyle

为文本设置字体样式。

此设置建议 ImageMagick 应尝试对当前所选字体族应用的字体样式。从以下选项中选择 fontStyle。

Any
Italic
Normal
Oblique

有关影响字体的其他设置,请参阅选项 -font、-family、-stretch 和 -weight。

搜索子图像。

此选项使 compare 功能能够搜索小图像在较大图像中的最佳匹配位置。搜索过程会生成一幅或两幅输出图像(或帧),具体取决于度量指标是否经过加速。

  • 第一幅输出是差异图像。
  • 第二幅输出(如果存在)是相似度评分图像。

当使用启用了 HDRI 的 ImageMagick 编译版本并安装了 FFTW 委托库时,特定的度量指标——NCCMSERMSEPSNRPHASEDPC——会自动使用 FFT(快速傅里叶变换)处理进行加速。这是默认行为。但是,通过使用标志 -define compare:frequency-domain=false,你可以禁用 FFT 加速,并在需要时改用速度较慢的空间域处理。

相似度评分图像的尺寸与较大图像相同。该输出中的每个像素代表小图像左上角在较大图像中的一个潜在位置。相似度图像中最亮的点对应于最佳匹配位置。对于经 FFT 加速的度量指标,该位置处的相似度评分也会显示在匹配坐标旁边的方括号中。

需要注意的是,相似度图像中的最佳匹配并不一定意味着完美匹配。峰值的实际亮度反映了匹配的质量。此外,相似度图像中其他较亮的峰值可能指示备选的潜在匹配位置。

各度量指标对_完美匹配_的定义各不相同。对于 MSERMSEPSNR(以及 MAEFUZZDSIMPHASH)等度量指标,完美匹配的值为 0。相反,NCCPHASEDPCAEPDCPAEMEPPSSIM 等度量指标则将完美匹配定义为 1。为了保持一致性,对于完美匹配为 0 的度量指标,相似度图像会被反转,从而确保最佳匹配位置显示为最亮的点,正如完美匹配为 1 的度量指标那样。

-swap index,index

交换图像序列中两幅图像的位置。

例如,-swap 0,2 会交换当前图像序列中的第一幅和第三幅图像。使用 +swap 可交换序列中的最后两幅图像。

-swirl degrees

围绕中心旋扭图像像素。

Degrees 定义了旋扭的紧密程度。

-synchronize

将图像同步到存储设备。

设置为 "true" 可确保所有图像数据被完全刷新并同步到磁盘。这会带来性能损失,但其好处包括:在系统崩溃时确保得到有效的图像文件,以及在磁盘空间不足以容纳图像像素缓存时及早报告。

-taint

将图像标记为已修改。

-text-font name

用于书写等宽文本的字体。

指定在固定(打字机风格)格式化文本中优先使用的字体名称。默认为 14 磅 Courier。

你可以为字体加上标签以指定它是 PostScript、TrueType 还是 X11 字体。例如,Courier.ttf 是 TrueType 字体,x:fixed 是 X11 字体。

-texture filename

要平铺到图像背景上的纹理的名称。

-threshold value{%}

对图像同时应用黑/白阈值。

任何超过指定阈值的像素值(更具体地说,是那些使用 -channel 设置的通道)都会被重新赋为最大通道值,而所有其他值则被赋为最小值。

阈值可以以百分比形式给出,也可以以对应于所需通道值的绝对整数形式给出。当以整数给出时,可达到的最小值为 0(当所有通道都受影响时对应黑色),但最大值(对应白色)是特定 ImageMagick 构建版本的量子深度,因此取决于安装情况。出于这个原因,对大多数应用而言,合理的建议是将阈值指定为百分比。

下面的命令将强制红色值高于 50% 的像素具有 100% 的红色值,而红色值等于或低于 50% 的像素的红色通道将被设为 0。绿色、蓝色和 alpha 通道(如果存在)将保持不变。

magick in.png -channel red -threshold 50% out.png

作为(可能)不实用但具有指导意义的示例,下面的命令将生成与输入图像尺寸相同的全黑图像和全白图像。

magick in.png -channel RGB -threshold 100% black.png
convert in.png -channel RGB -threshold -1 white.png

另请参阅 -black-threshold 和 -white-threshold。

-thumbnail geometry

创建图像的缩略图。

这类似于 -resize,但针对性能进行了优化。此外,注释和色彩配置文件会被移除,并设置 Thumb 属性。此选项遵循 -filter 设置,例如,为获得额外的性能而仅略微降低质量,可使用 -filter box。

有关 geometry 参数的完整细节,请参阅 Image Geometry

-tile filename

设置用于填充后续图形基元的平铺图像。

-tile geometry

指定图像的布局。

有关 geometry 参数的完整细节,请参阅 Image Geometry

-tile

指定后续的合成操作在图像上横向和纵向重复。

-tile-offset {+-}x{+-}y

指定平铺图像相对于其所平铺到的背景图像的偏移量。

应在通过 -tile 或 -texture 设置平铺图像之前进行此设置,或在使用 TILE: 或 PATTERN: 输入格式创建平铺画布时直接应用。

ImageMagick 在内部会在设置平铺图像时按给定的参数对平铺图像执行 -roll 操作。

-tint value

用填充色为图像着色。

用填充色为图像着色。

将着色量指定为百分比。黑色、白色、红色、黄色等纯色不会受到 -tint 的影响。只有诸如各种灰度之类的中间色调会受到影响。

-title string

为显示的图像指定标题。", "animate", "display", "montage

使用此选项为图像指定一个特定的标题。该标题被赋给图像窗口,通常显示在窗口标题栏中。你也可以通过嵌入 -format 选项下描述的特殊格式字符,选择性地包含图像文件名、类型、宽度、高度、Exif 数据或其他图像属性。

例如,

-title "%m:%f %wx%h"

对于一幅名为 bird.miff、宽度为 512、高度为 480 的图像,会生成图像标题 MIFF:bird.miff 512x480。

-transform

变换图像。

此选项应用来自先前 -affine 选项的变换矩阵。

magick -affine 2,2,-2,2,0,0 -transform bird.ppm bird.jpg

此运算符现已被 -distort 'AffineProjection' 方法取代。

-transparent color

使图像中的此颜色变为透明。

color 参数使用 -fill 选项下所述的格式定义。-fuzz 设置可用于匹配并替换与给定颜色相近的颜色。

使用 +transparent 可反转匹配的像素,即使所有不匹配的颜色变为透明。

-opaque 运算符与 -transparent 完全相同,但它用当前的 -fill 色设置替换匹配的颜色,而不是将其变为透明。然而,-transparent 运算符还会确保图像启用了 alpha 通道,如同 "-alpha set" 一样,并且不要求你修改 -channel 来启用 alpha 通道处理。

请注意,这并不会将该颜色定义为色彩映射图像格式(如 GIF)所使用的“透明色”。要实现这一点,请使用 -transparent-color

-transparent-color color

设置透明色。

有时这用于保存为 GIF 和 PNG8 等图像格式,这些格式使用此颜色来表示布尔型透明。它不会使某个颜色变为透明,而只是定义在所保存图像的调色板中透明色是哪种颜色。使用 -transparent 可使一个不透明颜色变为透明。

此选项允许你同时拥有一个不透明的可见颜色,以及一个相同颜色值的透明色而不发生冲突。也就是说,你可以在一幅图像中对透明区域和不透明区域使用相同的颜色。这反过来让你可以选择一个合适的透明色,使图像在由不处理透明色索引的应用程序显示时也能正常呈现,同时允许 ImageMagick 正确处理此类图像。

默认透明色为 #00000000,即完全透明的黑色。

-transpose

沿左上到右下的对角线镜像图像。

此选项在数学上对像素阵列进行转置。它等价于序列 -flip -rotate 90。

-transverse

沿图像的左下到右上对角线镜像图像。等价于操作 -flop -rotate 90。

-treedepth value

色彩缩减算法的树深度。

通常,此整数值为零或一。值为零或一会让色彩缩减算法使用最优的树深度。

最优深度通常能以最快的计算速度和最少的内存占用对源图像进行最佳表示。然而,默认深度对某些图像并不合适。为确保最佳表示,可为此参数尝试 2 到 8 之间的值。更多细节请参阅色彩缩减算法

要使此选项生效,需要使用 -colors 或 -monochrome 选项,或者写入需要色彩缩减的图像格式。

-trim

裁剪图像。

此选项移除与角落像素颜色完全相同的任何边缘。使用 -fuzz 可让 -trim 移除与角落像素颜色几乎相同的边缘。

图像的页面或虚拟画布信息会被保留,使你能够从图像中提取 -trim 操作的结果。如果不需要虚拟画布页面信息,可使用 +repage 将其移除。

如果裁剪后的图像“消失了”,则会产生一个警告,并返回一个特殊的单像素透明“未命中”图像,方式与 -crop 操作“未命中”图像本体时相同。

使用 -define trim:percent-background=0% 可移除图像中的全部背景。在边缘中可容忍的背景量以百分比指定。0% 表示不容忍任何背景。50% 表示根据模糊因子,一条边缘最多可包含 50% 的背景像素。

使用 -define trim:edges={north,east,south,west}(以逗号分隔)可只裁剪图像的指定边缘,例如 -define trim:edges=north,south -fuzz 5% -trim。

使用 -define trim:minSize=geometry 可将裁剪限制为指定尺寸。

使用 -background background-color 可标识围绕感兴趣区域的背景色。

完全透明的像素通常被视为没有颜色,或其颜色无关紧要。比较两个都完全透明的像素时,它们通常被视为相等。这意味着在评估过程中,与其颜色相关的任何属性都会被忽略。

-type type

图像类型。

可从以下选择:Bilevel、Grayscale、GrayscaleAlpha、Palette、PaletteAlpha、TrueColor、TrueColorAlpha、ColorSeparation 或 ColorSeparationAlpha。

通常,当某种格式支持灰度和真彩色等不同子格式时,编码器会尝试选择高效的子格式。-type 选项可用于覆盖此行为。例如,即使图像中只存在灰色像素,若要防止 JPEG 以灰度格式写入,可使用:

magick bird.png -type TrueColor bird.jpg

类似地,若输出格式支持透明,即使图像不透明,也可使用 -type TrueColorAlpha 强制编码器写入 alpha 通道。

使用 -type optimize 可确保图像以尽可能小的文件大小写入。

-undercolor color

设置注释边界框的颜色。

颜色使用 -fill 选项下所述的格式指定。

更多细节请参阅 -draw。

-update seconds

检测图像文件何时被修改并重新显示。

假设在你显示某幅图像时,当前显示的文件被覆盖。display 会自动检测到输入文件已更改,并相应地更新所显示的图像。

-unique-colors

对任何像素颜色仅保留其中之一,其余丢弃。

-units type

图像分辨率的单位。

可从以下选择:Undefined、PixelsPerInch 或 PixelsPerCentimeter。此选项通常与 -density 选项配合使用。

-unsharp radius

-unsharp radius{xsigma}{+gain}{+threshold}

使用反锐化掩模算子锐化图像。

-unsharp 选项可锐化图像。图像会与给定半径和标准差(sigma)的高斯算子进行卷积。为获得合理的结果,radius 应大于 sigma。使用 0 作为 radius 可让该方法自行选择合适的半径。

sigma 值是重要的参数,决定了实际进行的锐化量。

radius 仅用于确定保存计算所得高斯分布的数组的大小。它应为整数。如果未给出或设为零,IM 将计算能为高斯分布提供有意义结果的最大可能半径。

参数如下:

radius
高斯的半径,以像素为单位,不计中心像素(默认 0)。
sigma
高斯的标准差,以像素为单位(默认 1.0)。
gain
原图与模糊图之间差异中被加回原图的比例(默认 1.0)。
threshold
应用差异量所需的阈值,以 QuantumRange 的比例表示(默认 0.05)。

-verbose

当此选项位于 -identify 选项或 info: 之前时,打印有关图像的详细信息。

-version

打印 ImageMagick 版本字符串并退出。

-view string

FlashPix 查看参数。

-vignette radius{xsigma}{+-}x{+-}y{%}

以晕影风格柔化图像边缘。

晕影效果的衰减由 radiusxsigma 控制。对于标称衰减,应设为 0xsigma。值为 0x0 会产生无衰减的圆/椭圆。参数 x 和 y 控制圆的大小。较大的值会减小半径,较小的值会增大半径。值为 +0+0 会生成与图像大小相同的圆/椭圆。x 和 y 的默认值为相应图像尺寸的 10%。因此,半径将减小 10%,即圆/椭圆的直径将为相应图像尺寸的 80%。注意,geometry 中的百分号影响 x 和 y,而 radius 和 sigma 是绝对值(例如 -vignette "0x2+10%+10%")。

-virtual-pixel method

指定虚拟像素的内容。

此选项定义当颜色查找完全“未命中”源图像时应使用何种颜色源,即看起来围绕在源图像周围的颜色。通常此颜色派生自源图像,但也可设为指定的背景色。

可从以下方法中选择:

background
图像周围区域为背景色
black
图像周围区域为黑色
checker-tile
图像与背景色交替排列的方格
dither
非随机的 32x32 抖动图案
edge
将边缘像素向无穷远延伸
gray
图像周围区域为灰色
horizontal-tile
水平平铺图像,上下方为背景色
horizontal-tile-edge
水平平铺图像并复制侧边边缘像素
mirror
镜像平铺图像
random
从图像中选取一个随机像素
tile
平铺图像(默认)
transparent
图像周围区域为透明的黑色
vertical-tile
垂直平铺图像,两侧为背景色
vertical-tile-edge
垂直平铺图像并复制侧边边缘像素
white
图像周围区域为白色

默认值为 "edge"。

这对于 -distort、-implode 和 -fx 等扭曲算子最为重要。不过它也会影响可能访问图像本体之外像素的操作,例如 -convolve、-blur 和 -sharpen。

要打印虚拟像素类型的完整列表,请使用 -list virtual-pixel 选项。

-visual type

使用此 X visual 类型动画显示图像。", 'animate', 'display'

可从以下 visual 类中选择:

StaticGray    TrueColor
GrayScale     DirectColor
StaticColor   default
PseudoColor   visual id

X 服务器必须支持你所选择的 visual,否则会发生错误。如果未指定 visual,则会选择在默认屏幕上能够显示最多同时颜色数的 visual 类。

-watermark brightnessxsaturation

使用给定的亮度和饱和度百分比为图像添加水印。

取一幅灰度图像(带 alpha 掩模),并根据水印图像的灰度值和亮度百分比修改目标图像的亮度。目标的颜色饱和度属性直接按饱和度百分比修改,该百分比默认为 100%(不改变颜色)。

-wave amplitude

-wave amplitudexwavelength

将图像的列剪切成正弦波。

-wavelet-denoise threshold

-wavelet-denoise thresholdxsoftness

使用小波变换从图像中去除噪声。threshold 是低于该值即被视为噪声的阈值,范围为 0.0(无)到 QuantumRange,或使用百分比(例如 5%)。softness 衰减该阈值,通常范围为 0.0(无,默认)到 1.0。值越高,图像中保留的噪声越多。

-weight fontWeight

设置文本的字体粗细。

此设置建议 ImageMagick 应尝试应用于当前所选字体系列的字体粗细。fontWeight 使用正整数,或从以下中选择。

Thin
等同于 fontWeight = 100。
ExtraLight
等同于 fontWeight = 200。
Light
等同于 fontWeight = 300。
Normal
等同于 fontWeight = 400。
Medium
等同于 fontWeight = 500。
DemiBold
等同于 fontWeight = 600。
Bold
等同于 fontWeight = 700。
ExtraBold
等同于 fontWeight = 800。
Heavy
等同于 fontWeight = 900。

要打印粗细类型的完整列表,请使用 -list weight。

有关影响字体的其他设置,请参阅选项 -font、-family、-stretch 和 -style。

-white-balance

根据 LAB 色彩空间中的灰世界假设对图像应用白平衡。

使用 -define white-balance:vibrance=value{%} 可更改 a 与 b 通道的色彩鲜艳度。

-white-point x,y

色度白点。

-white-threshold value{%}

将所有高于阈值的像素强制为白色,而保持等于或低于阈值的所有像素不变。

阈值可以以百分比给出,或以 [0, QuantumRange] 范围内对应于所需 -channel 值的绝对整数值给出。有关阈值及结果值的更多细节,请参阅 -threshold。

-window id

使图像成为某个窗口的背景。", 'animate', 'display'

id 可以是窗口 id 或名称。指定 root 可选择 X 的根窗口作为目标窗口。

默认情况下,图像会平铺到目标窗口的背景上。如果指定了 backdrop 或 -resize,则图像周围会环绕背景色。详情请参阅 X RESOURCES。

如果图像的独特颜色数多于目标窗口色彩映射表所允许的数量,则图像将不会显示在根窗口上。使用 -colors 可减少颜色数量。

-window-group

指定窗口组。

-word-break type

设置当文本本会溢出其内容框时是否在任意位置换行。可从 normal(默认)或 break-word 中选择。

-write filename

写出图像序列。

-write filename 选项之前的图像序列会被写出,如果还有其他选项,则处理会以图像当前状态继续进行。要在写出图像后将其恢复到原始状态,请使用 +write filename 选项。

使用 -compress 可指定图像压缩的类型。

-write-mask filename

阻止对掩模所指定的图像像素进行更新。

这与用于合成掩模操作的掩模相同,灰度值会导致对所附加图像进行混合更新。

使用 +write-mask 可从图像中移除掩模。

另请参阅 -clip-mask,它的工作方式相同,但采用严格的布尔型掩模。