0

在 ImageMagick 中,我可以通过三个独立的步骤创建合成。我将第一张图片固定在角落,然后是第二张图片。然后我合成并将这两个图像放在背景图像的顶部:

convert .\source1.png -matte -virtual-pixel transparent -distort Perspective '0,0,27,211 0,278,197,266 500,0,176,19 500,278,323,48' source1a.png
convert .\source2.png -matte -virtual-pixel transparent -distort Perspective '0,0,2,72 0,278,86,181 500,0,215,2 500,278,311,85' source2a.png
convert .\card.png -page +253+41 .\source2a.png -page +0+98 .\source1a.png -layers flatten fred4.png

由于某种原因,Windows 不会像我期望的那样响应将这些命令放在括号中:

convert .\card.png -page +253+41 (.\source1.png -matte -virtual-pixel transparent -distort Perspective '0,0,27,211 0,278,197,266 500,0,176,19 500,278,323,48') -page +0+98 (.\source2.png -matte -virtual-pixel transparent -distort Perspective '0,0,2,72 0,278,86,181 500,0,215,2 500,278,311,85') -layers flatten fred4.png

出于某种原因,当我执行上述命令时,它会为每个图像打开查看器,并且输出是错误的。

有没有办法做到这一点而不必写出两个中间图像?理想情况下,我可以将图像放在背景上,然后在背景图像的坐标空间中做角销。任何想法都会非常有帮助。

非常感谢!

4

1 回答 1

1

当您使用括号对命令进行分组时,您需要在和字符的每一侧(至少)留下一个空白。这是有据可查的,并且所有示例都显示了它!(在 Unix 上,甚至可以将它们转义并使用和分组 ImageMagick 命令)。()\(\)

所以这应该适用于 Windows:

convert                   ^
  card.png                ^
 -page +253+41            ^
    (                     ^
      source1.png         ^
     -matte               ^
     -virtual-pixel transparent ^
     -distort Perspective '0,0,27,211 0,278,197,266 500,0,176,19 500,278,323,48' ^
    )                     ^
 -page +0+98              ^
    (                     ^
      source2.png         ^
     -matte               ^
     -virtual-pixel transparent ^
     -distort Perspective '0,0,2,72  0,278,86,181  500,0,215,2  500,278,311,85'  ^
    )                     ^
 -layers flatten          ^
  fred4.png
于 2012-09-12T17:50:34.557 回答