【发布时间】:2012-08-29 16:52:31
【问题描述】:
我正在寻找在 ImageMagick 中在背景图像之上将多个图像拼接在一起的最有效方法,以使重叠图像之间的间距/填充保持一致?
我研究了 +append、convert -composite 以及使用 -page 和 -layers merge 进行转换。
以下命令 (convert -composite) 有效,但需要预先计算图像尺寸以指定绝对偏移量。真的,我想要在第一个分层图像的结尾和第二个分层图像的开始之间有 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
我正在寻找某种运算符,以便可以相对于分层中的“最后一个”图像解释水平偏移量,因此我没有为第二个图像指定 +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
所描述的两种技术都需要预先计算绝对偏移量,这有点麻烦。有没有更好的方法来做到这一点?
【问题讨论】:
-
同一拼接过程的所有输入图像是否具有相同的宽度和高度(并且仅可能在下一次拼接时更改)?
-
背景是真实的图像,但它的尺寸是静态的(或者至少它会是某种易于平铺/可裁剪的图像)。
-
图片的尺寸并不完全相同。我们会将它们限制在给定的最大高度和最大宽度(待确定),因此根据输入图像的尺寸,这种限制将导致可变宽度。
-
您没有明确回答我关于输入图像尺寸的问题。同样,换一种说法:一个拼接过程中的图像可以有不同的宽度吗?
-
是的,它们可以有不同的宽度。
标签: imagemagick imagemagick-convert