为什么-composite在调用不正确时会忽略第一个图像?

时间:2016-06-30 22:45:42

标签: imagemagick imagemagick-convert

我一直试图了解ImageMagick的图像堆栈。这是我的理解:

每当您在命令行上引用图像时,都会将图像添加到堆栈中。某些操作员可以从堆栈中弹出多个图像并推送结果图像,例如+append-composite。例如:

convert a.png b.png -composite output.png

这可以像预期的那样在a上复合b。

但是当我运行它时(我知道它没有意义,但我试图理解这种行为):

convert a.png -composite b.png output.png

我得到的图片只包含b.png为什么会这样?第一张图片去了哪里?你不希望这个错误,因为复合材料没有两个图像可供使用吗?

另外,如果我运行它,

convert -composite a.png b.png output.png

我得到了与a.png b.png -composite一样的结果。为什么是这样?你不期望这也是错误的吗?

这让我感到困惑,因为我希望输入错误的输入会抛出错误而不是产生意外的输出。在使用ImageMagick时,如何避免这些问题?

1 个答案:

答案 0 :(得分:1)

我认为这与ImageMagick团队简化和合理化参数顺序的愿望有关,但仍然适合使用原始旧参数顺序的人。

你的第一个例子是,恕我直言,新的和首选的做事方式,加载第一张图像,然后加载第二张图像,然后用两者做点什么。

convert a.png b.png -composite output.png

你的第二个和第三个例子是因为ImageMagick试图容纳一种不合逻辑的,或者可能是老式的使用方法。如果在图像不足时使用运算符(例如-composite),则会记住该图像,然后在图像足够时应用它。

我写了另一个非常相关的答案here,可能有助于澄清一点。

有一个很好的解释here