为什么有些 ImageMagick 标志带有加号 (+) 而其他的带有减号 (-)?
Why do some ImageMagick flags have plus sign (+) and others minus (-)?
我没有看到使用 +
与 -
有任何押韵或理由,而且我从未见过除 ImageMagick 套件之外的 Unix 命令(convert
,等),它期望一些标志具有 +
。 Win32 命令(以及它们到 Linux 的端口)有时使用 /
,但从不使用 +
.
我不知道这背后的背景,但个人觉得很合理。一般来说,正常形式就像其他 Linux 命令一样,前面有破折号或连字符:
magick INPUT -something OUTPUT
+
形式用在有感的时候:
- 否定,或者
- 反方向,或
- 重置、禁用或清除或
- 作为 shorthand 形式。
这些概念可能有一些重叠,也可能存在其他附加概念。
所以,就“否定”而言:
magick INPUT -fill red -opaque blue RESULT
会将所有蓝色像素变成红色,而此命令:
magick INPUT -fill red +opaque blue RESULT
会将所有 非蓝色 像素变为红色。
类似地,-adjoin
会尽可能将多个图像聚集到一个输出文件中,而 +adjoin
会强制多个单独的输出文件,即使它可能已经可以制作,比方说,多页 TIFF 或动画 GIF。
另一个示例是 -level 10%,90%
,它将 增加 对比度,这样亮度范围的顶部和底部 10% 将被丢弃,剩余的 80% 将被拉伸到完整的、允许的亮度范围。另一方面,+level 10%,90%
将通过将整个可能的亮度范围压缩到可能亮度范围的中心 80% 来 降低 对比度。
根据“相反方向”,此命令将在第一个垂直下方附加图像:
magick INPUT INPUT INPUT -append TALL_RESULT
而以下肯定形式会将图像水平附加到右侧:
magick INPUT INPUT INPUT +append WIDE_RESULT
根据“重置、禁用或清除”,此命令将使用 Riemer 抖动:
magick INPUT -dither RiemerSMA ... RESULT
而以下肯定形式将禁用抖动:
magick INPUT +dither ... RESULT
如果您 select 对几个通道应用过滤器或阈值,您可以在之后重置回默认通道:
magick INPUT -channel alpha -threshold 50% +channel RESULT
如果您为某些操作设置了模糊,之后您可以将其重置为零:
magick INPUT -fill red -fuzz 10% -opaque blue +fuzz -opaque yellow RESULT
这会将填充颜色设置为红色,然后将蓝色 10% 范围内的所有像素变为红色,并将所有完全黄色的像素变为红色填充颜色。
在shorthand方面,-swap 0,2
将交换序列中的第一张和第三张图像,而+swap
将交换序列中的最后两个,不管有多少。这是一个常见的操作,与传统的替代方案相比,加号形式简洁 -swap -1,-2
同样,-clone 2
将克隆序列中的第三个图像,而 +clone
将克隆最后一个……同样,这是一个非常常见的操作。将 +clone
与外观更传统但恕我直言更丑陋的替代方案 -clone -1
进行比较
同样,+delete
将删除序列中的最后一张图像。
我没有看到使用 +
与 -
有任何押韵或理由,而且我从未见过除 ImageMagick 套件之外的 Unix 命令(convert
,等),它期望一些标志具有 +
。 Win32 命令(以及它们到 Linux 的端口)有时使用 /
,但从不使用 +
.
我不知道这背后的背景,但个人觉得很合理。一般来说,正常形式就像其他 Linux 命令一样,前面有破折号或连字符:
magick INPUT -something OUTPUT
+
形式用在有感的时候:
- 否定,或者
- 反方向,或
- 重置、禁用或清除或
- 作为 shorthand 形式。
这些概念可能有一些重叠,也可能存在其他附加概念。
所以,就“否定”而言:
magick INPUT -fill red -opaque blue RESULT
会将所有蓝色像素变成红色,而此命令:
magick INPUT -fill red +opaque blue RESULT
会将所有 非蓝色 像素变为红色。
类似地,-adjoin
会尽可能将多个图像聚集到一个输出文件中,而 +adjoin
会强制多个单独的输出文件,即使它可能已经可以制作,比方说,多页 TIFF 或动画 GIF。
另一个示例是 -level 10%,90%
,它将 增加 对比度,这样亮度范围的顶部和底部 10% 将被丢弃,剩余的 80% 将被拉伸到完整的、允许的亮度范围。另一方面,+level 10%,90%
将通过将整个可能的亮度范围压缩到可能亮度范围的中心 80% 来 降低 对比度。
根据“相反方向”,此命令将在第一个垂直下方附加图像:
magick INPUT INPUT INPUT -append TALL_RESULT
而以下肯定形式会将图像水平附加到右侧:
magick INPUT INPUT INPUT +append WIDE_RESULT
根据“重置、禁用或清除”,此命令将使用 Riemer 抖动:
magick INPUT -dither RiemerSMA ... RESULT
而以下肯定形式将禁用抖动:
magick INPUT +dither ... RESULT
如果您 select 对几个通道应用过滤器或阈值,您可以在之后重置回默认通道:
magick INPUT -channel alpha -threshold 50% +channel RESULT
如果您为某些操作设置了模糊,之后您可以将其重置为零:
magick INPUT -fill red -fuzz 10% -opaque blue +fuzz -opaque yellow RESULT
这会将填充颜色设置为红色,然后将蓝色 10% 范围内的所有像素变为红色,并将所有完全黄色的像素变为红色填充颜色。
在shorthand方面,-swap 0,2
将交换序列中的第一张和第三张图像,而+swap
将交换序列中的最后两个,不管有多少。这是一个常见的操作,与传统的替代方案相比,加号形式简洁 -swap -1,-2
同样,-clone 2
将克隆序列中的第三个图像,而 +clone
将克隆最后一个……同样,这是一个非常常见的操作。将 +clone
与外观更传统但恕我直言更丑陋的替代方案 -clone -1
同样,+delete
将删除序列中的最后一张图像。