按中心对齐压平图层,而不是按左上角对齐

问题描述 投票:0回答:1

如何重叠多个图像,使它们的中心直接位于彼此的顶部?

我使用

-layers merge
而不是
-layers flatten
,因为展平会裁剪图像以适合第一个图像的尺寸,但合并会扩展“画布”,并且我希望能够看到每个输入的全部图像。

-layers merge
-layers flatten
的默认行为是对齐左上角:

convert wizard: \( logo: -transparent white \) \( rose: -transparent white \) -background white -layers merge merged.png

您可以看到玫瑰位于左上角,但我希望它位于中间。我还希望

wizard:
图像居中对齐。

所需输出:

imagemagick imagemagick-convert
1个回答
0
投票

最简单的方法是使用 Imagemagick 多次使用 -gravity 和 -composite

convert wizard: \( logo: -transparent white \) -gravity center -composite \( rose: -transparent white \) -gravity center -composite merged.png

或者,您可以计算左上角,使中心对齐并使用 -set 页面。只需从向导图像中减去每个的中心即可。

convert xc: -format "%[fx:240-320]\n" info:
-80

convert xc: -format "%[fx:320-240]\n" info:
80

convert xc: -format "%[fx:240-35]\n" info:
205

convert xc: -format "%[fx:320-23]\n" info:
297

convert wizard:  \( logo: -transparent white -set page -80+80 \) \( rose: -transparent white -set page +205+297 \) -background white -layers merge merged2.png

© www.soinside.com 2019 - 2024. All rights reserved.