我有以下文件: background.jpg element1.jpg element2.jpg
我想取element1.jpg,将其调整为300x300,将其放在background.jpg上,然后取出element2.jpg,将其调整为400x400并将其放在背景上。我不希望背景调整大小。
这是我目前的命令。似乎调整400x400!应用于内存中的所有先前图像(background.jpg和element1.jpg),而不是一个特定的图像。
convert background.jpg -page +0+0 -resize 300x300! element1.jpg -page +0+0 -resize 400x400! element2.jpg -layers flatten output.jpg
有没有办法在不创建tmp文件夹的情况下完成此操作以保存“中间步骤”并在一个命令中完成所有操作?或者,有没有办法使用“括号”来指定首先运行哪些命令?
答案 0 :(得分:2)
您可以使用括号来确保操作符仅适用于特定图像,如下所示:
convert background.jpg \
\( element1.jpg -resize NNN \) -composite \
\( element2.jpg -resize MMM \) -composite result.jpg
因此,如果我们创建3个测试图像,大小相同,为600x400像素:
convert -size 600x400 xc:red red.png
convert -size 600x400 xc:yellow yellow.png
convert -size 600x400 xc:blue blue.png
我们现在可以单独调整大小并定位它们:
convert blue.png \
\( red.png -resize 80x50! \) -geometry +20+100 -composite \
\( yellow.png -resize 200x200! \) -geometry +200+150 -composite result.png