Prz*_*icz 8 imagemagick imagemagick-convert
我正在寻找在ImageMagick中将多个图像拼接在一起的最有效方法,在背景图像上,使得叠加图像之间的间距/填充是一致的?
我已经研究过使用+ append,convert -composite和转换-page和-layers合并.
以下命令(convert -composite)有效,但需要预先计算图像尺寸才能指定绝对偏移.真的,我希望FIRST分层图像的末端和第二层图像的开始之间有10像素的间隙,但我能看到的唯一方法是通过指定画布左上角的绝对偏移量.
convert \
background.jpg \
first.jpg -gravity Northwest -geometry +10+10 -composite \
second.jpg -geometry +300+10 -composite \
third.jpg -geometry +590+10 -composite \
output.jpg
Run Code Online (Sandbox Code Playgroud)
我正在寻找某种类型的运算符,以便可以相对于分层中的"最后"图像解释水平偏移,因此我可以以某种方式指定偏移,而不是指定+300+10第二个图像和+590+10第三个图像+10+10.
我认为引力可以让我实现那个(-gravity Northwest),就像float: left;在CSS定位中一样,但事实并非如此.
我在以下方面也取得了一些成功:
convert \
-page +10+10 first.jpg \
-page +300+10 second.jpg \
-page +590+10 third.jpg \
-background transparent \
-layers merge \
layered.png
convert background.jpg layered.png -gravity Center -composite output.jpg
Run Code Online (Sandbox Code Playgroud)
所描述的两种技术都需要预先计算绝对偏移,这有点痛苦.有一个更好的方法吗?
你忽略了这个montage命令.
添加所需间距的最简单命令是设置-frame 5选项-mattecolor none.这适用于不同宽度值的图像,并将它们全部分开,距离为10像素:
montage \
-alpha on \
-background none \
-mode concatenate \
-tile x1 \
-frame 5 \
-mattecolor none \
*.jpg \
output1.png
Run Code Online (Sandbox Code Playgroud)
但是,您会很容易注意到,生成的图像的边框在顶部,右侧,底部和左侧只有5个像素宽.要删除这5个像素,请使用:
convert output1.png -shave 5 output2.png
Run Code Online (Sandbox Code Playgroud)
要将此结果叠加到您的上background.jpg,请使用:
convert \
background.jpg \
output2.png \
-gravity Northwest \
-geometry +10+10 \
-composite \
final.jpg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10341 次 |
| 最近记录: |