我想要一个可以在单次执行中执行以下任务的组合命令。我搜索了互联网,但几乎找不到任何指导我们编写任何堆栈命令的教程。我可以为每个操作找到单个命令,例如-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
使用" Hello world"注释mpr:out3
(placement = bottom) - > PNG: -
我没有包含我尝试过的命令,因为它们太乱了,对于阅读它的用户来说是一种侮辱。我试了好几个小时,但不能完成它。请指教。
答案 0 :(得分:1)
由于我只使用样本图片,我没有用精确的坐标来度过难关,但是这个单行程包含了你所需要的所有技巧。
最终图像中每个元素基本上有一行代码:
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))
。
希望相当清楚!
启动图片