[英]ImageMagick Command-Line Option Order (and Categories of Command-Line Parameters)
我的主管要求我将使用PerlMagick的Perl脚本部分转换为管道并使用ImageMagick的命令行版本(出于各种不相关的原因)。
使用我们现有的界面(裁剪,缩放,保存等),我正在建立一个用户想要对图像执行的操作列表,构建语句到管道然后执行它。
我想知道的是:
显然,对图像执行操作的顺序是至关重要的,所以如果我可以一次执行所有操作(可能获得效率?)或者如果我将不得不执行,我正在努力解决这个问题。每个操作分开。 谢谢
不幸的是,这个问题的接受答案还没有完成...... :-)
假设您的ImageMagick版本是最近版本,这是对它的一个重要修正:
你应该区分3大类命令行参数:
这三个类的行为有所不同:
图像设置
图像设置在命令行中显示时仍然存在。 它可能会影响所有后续处理(但不会影响以前的处理):
图像设置保持有效...
图像运算符
图像操作符应用于(单个)图像并被遗忘。 它与图像设置不同,因为它会立即影响图像,因为它出现在命令行上。 (请记住:图像设置一直持续到命令行终止,或直到它被重置。)
如果需要将同一图像操作符应用于同一命令行中的第二个图像,则必须在命令行上重复该精确操作符。
严格来说,根据ImageMagick命令行的新架构,所有图像操作符都应在加载图像后编写。 然而,IM开发人员妥协:为了向后兼容,图像操作员仍然可以在加载图像之前出现 - 然后它们将应用于他们可用的第一个图像。
图像序列运算符
图像序列运算符应用于所有当前加载的图像(然后被遗忘)。
它与简单的图像操作符的不同之处在于它不仅影响单个图像。 (一些运营商才有意义,如果他们的操作有多个图像进行消费:想-append
, -combine
, -composite
, -morph
...)
从上述原则可以得出结论:在大多数情况下,命令行参数的顺序很重要。 (如果你知道他们做了什么,你也知道你需要使用哪个顺序来应用它们。)
(为了完整起见,我应该补充:还有另一类杂项或其他参数,它们不属于上面列出的任何类别。想想-debug
, -verbose
或-version
。)
不幸的是,3类IM命令行参数之间的明显区别还不是(在其他非常精明的)IM用户中的常识 。 因此,获得更多曝光是值得的。
ImageMagick主要版本6引入了这种明显的区别。之前,它更令人困惑:某些设置的语义随着上下文而改变,也随着它们的顺序而改变。 复杂命令的结果并不总是可预测的,有时令人惊讶和不合逻辑。 (现在它们有时候可能会令人惊讶,但是当你仔细观察它们时,理解上面的内容,它们总是很合乎逻辑。)
每当您不确定某个特定参数属于哪个类时,运行
convert -help | less
搜索您的参数。 找到后,向后滚动:然后您应该找到它出现的“标题”。 现在您可以确定它是哪种类型: 图像设置 , 图像操作员或图像序列操作员 - 并考虑我上面对他们所说的内容。
如果你的工作是将你的ImageMagick接口从PerlMagick移植到CLI,你应该知道另一个技巧:你可以插入
+write output-destination
在命令行的任何地方(甚至多次)。 然后,这将以当前处理的状态将当前加载的图像(或当前加载的图像序列)写出到给定的输出目的地。 (将其视为与 tee
相似的东西 - 用于shell /终端使用的命令,它将 <stdout>
的副本 <stdout>
到文件中。)输出目标可以是文件,或show:
或其他任何对IM有效的内容输出。 写入输出后,将继续处理完整命令。
当然,仅在第一个(或任何其他) 图像操作符之后插入+write
才有意义 - 否则当前图像列表将不会更改。
如果存在多个输出图像(因为当前图像列表包含多个图像),则ImageMagick将自动为相应的文件名分配索引编号。
这对于调试(或优化,简化,简化......)复杂的命令设置非常有帮助。
转换操作是从左到右执行的吗? 即我传递的顺序
是。 如果我采用以下两个例子,除了操作顺序之外是相同的,我可以期待基于从左到右的不同结果。
convert rose: -sample 300% -wave 5x10 rose_post_wave.png
convert rose: -wave 5x10 -sample 300% rose_pre_wave.png
您可以在图像采样之后或之前看到波浪操作的效果影响图像。
如果我两次通过相同的选项会怎样? 它们是分开进行的吗?
将执行两次。 不存在特殊锁定或自动操作计数。
convert rose: -blur 0.5x0.5 -scale 300% rose_blur1.png
convert rose: -blur 0.5x0.5 -blur 0.5x0.5 -scale 300% rose_blur2.png
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.