实用Imagemagick堆栈(组合)复杂命令
我想要一个组合命令,它可以在一次执行中执行以下任务。我搜索了互联网,但几乎找不到任何指导我们编写堆栈命令的教程。我可以为每个操作找到单个命令,例如实用Imagemagick堆栈(组合)复杂命令,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我想要一个组合命令,它可以在一次执行中执行以下任务。我搜索了互联网,但几乎找不到任何指导我们编写堆栈命令的教程。我可以为每个操作找到单个命令,例如-composite,-blur,等等,我知道我可以将命令作为管道传输 convert ... mpr:- | convert ... mpr:- | ... | convert ... png:- 但是,我需要一个使用\(…\)和mpr:{label}的组合命令,因为这将提高性能,因为所有操作都是在单个进程中执行的(shell中的管道可能会降低性能
-composite
,-blur
,等等,我知道我可以将命令作为管道传输
convert ... mpr:- | convert ... mpr:- | ... | convert ... png:-
但是,我需要一个使用\(…\)
和mpr:{label}
的组合命令,因为这将提高性能,因为所有操作都是在单个进程中执行的(shell中的管道可能会降低性能,并且进程序列必须有序)
过程顺序如下:
flower.png
放在frame.png
->mpr:framedFlower
mpr:framedFlower
放在background.png
->mpr:out2
heart.png
,右渐变透明smiley.png
,并将两幅图像置于mpr:out2
->mpr:out3
mpr:out3
:-
我不包括我尝试过的命令,因为它们太乱了,这将是对阅读它的用户的侮辱。我试了好几个小时,但都做不成。请告知
我还并没有花很长时间来研究精确的坐标,因为我只使用了样本图片,但这一行包含了你们所要求的每一种技术 在最终图像中,每个元素基本上有一行代码:
convert frame.png -resize 500x400\! \( flower.png -resize 400x300\! \) -gravity center -composite \
background.png +swap -gravity northwest -geometry +100+150 -composite \
\( heart.png -resize 200x200 -blur 0x8 \) -geometry +1200+250 -composite \
-gravity south -pointsize 72 -fill red -annotate +0+60 'Hello world' \
\( emoji.png -resize 250x250 -channel a -fx "u.a*(1-(i/w))" \) -gravity northwest -geometry +1200+500 -composite result.png
第一行读入相框和花,并根据括号分别调整大小,然后将花合成到相框中
下一行加载背景,然后使用+swap
将其放在上一行的带框图片后面。然后,它将-gravity
设置为西北方向,作为后续-geometry
的原点,然后再将带边框的图片合成到背景上
下一行加载心脏并调整心脏大小并使其模糊,然后在指定位置将其合成到主图片上
接下来是注释-唯一有趣的是我将-geometry
设置为south
,这意味着-annotate
的偏移相对于背景的底部中心
最后,在合成主图像之前,我加载表情符号并在括号中调整大小。唯一有趣的是,我使用-fx
来改变alpha通道(-channel a
),我将现有的透明度(u.a
)乘以我们穿过图像的距离的倒数,即(1-(I/w))
希望这是相当清楚的
启动图像
谢谢,我试过了,效果很好。最初,我尝试了
convert frame.png flower.png-composite-write-mpr:a\\(background.png-mpr:a-composite-write-mpr:b\)\(mpr:b heart.png-composite-write-mpr:c\)。。。。png:-
它一直在失败。从您的回答中,我刚刚意识到我们可以在图像堆栈中合成图像,而不是使用mpr:{label}
。很抱歉我的回复太晚,我花了很多时间重新阅读这些教程。当我获得足够的声誉时,我会投赞成票,谢谢。