Я ищу наиболее эффективный способ объединения нескольких изображений в ImageMagick поверх фонового изображения, чтобы расстояние/заполнение между наложенными изображениями было одинаковым?
Я исследовал использование +append, convert -composite и convert с объединением -page и -layers.
Следующая команда (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
Оба описанных метода требуют предварительного расчета абсолютных смещений, что немного утомительно. Есть лучший способ сделать это?