【问题标题】:Why does -composite ignore the first image when called incorrectly?为什么 -composite 在错误调用时会忽略第一张图像?
【发布时间】:2016-07-01 17:14:39
【问题描述】:

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

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

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

正如预期的那样,这将 b 复合在 a 之上。

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

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

我得到一张只包含b.png 的图片。 为什么会这样?第一张图片去哪儿了?由于合成没有两个图像可以使用,您不希望这会出错吗?

另外,如果我运行这个,

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

我得到的结果与我运行 a.png b.png -composite 时的结果相同。为什么是这样?您不希望这也会出错吗?

这让我很困惑,因为我认为格式错误的输入会引发错误,而不是产生意外的输出。使用 ImageMagick 时如何避免此类问题?

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

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

    你的第一个例子是,恕我直言,新的和首选的做事方式,加载第一张图片,然后是第二张图片,然后对两者做一些事情。

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

    您的第二个和第三个示例之所以有效,是因为 ImageMagick 试图适应一种不合逻辑的,或者可能是过时的使用方式。如果在图像不足时使用运算符(例如-composite),它会记住这一点,然后在图像足够时应用它。

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

    有一个很好的解释here

    【讨论】:

    • 知道了。所以它只是试图适应不同的订单。我认为这实际上很令人困惑,但我发现+write 一直是查看管道各个阶段“实际”发生的事情的救星。再次感谢。
    • 不客气 - 祝你的项目好运。请记住,问题(和答案)是免费的,如果遇到困难请回来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多