我可以使用imagemagick从右侧复合吗?

时间:2014-10-07 07:48:50

标签: php imagemagick composite

在这种正常情况下,当我们需要在另一个图像上合成图像时,我们使用:

exec("convert  1.jpg  2.jpg  -geometry +0+0 -compose DstOver -composite result.jpg);

和0,0点是图片左侧站点的起始行。 我需要从右侧使用我的点,例如我有一个500px高度和500px宽度的jpg文件,我需要从500,0合成image2。这不好,因为如果你的image2文件的高度和宽度都是100px的100px,你的结果在视图中没有任何变化。

我的目标是从图像的右侧构图,因为我的图像2每次都有不同的宽度和高度。

enter image description here

我的意思是我需要从3点和4点像图片一样构图。 我尝试Imagemagick place image in bottom right corner,但这个解决方案由SouthEast,SouthWest和......组成。 我需要使用我的几何尺寸和点..

enter image description here

对于固定大小的图像我没有任何问题,但我用imagemagick创建文本,它可能有1个字符或更多,在这种情况下,我的png文本的宽度有不同的大小。

修改: 事实上,我从输入中获取文本并使用不同的长度,然后用背景图片组成:

enter image description here

好吧,我需要和#34;示例文本2"的右上角一起撰写。喜欢图片,而不是像#34; Text1" 当我创建文本png文件时,它可能由不同的宽度和高度创建。 (对不起,我不能解释得更好,抱歉我的英语不好)

1 个答案:

答案 0 :(得分:1)

<强>被修改

好的,我越来越了解你想要什么,首先观察的是,如果你指定-gravity那么geometry中的偏移是相对于重力的 - 它会移动重叠的图像INWARDS重力角是您在几何体偏移中指定的量。因此,让我们首先将重力设置为NorthEast,将叠加层放在右上角:

convert background.jpg overlay.jpg -gravity northeast -composite out.jpg

现在让我们获取叠加层的宽度并使用它来计算所需的几何图形,假设您希望叠加图像的右边缘距背景的右边缘50像素:<\ n / p>

geom=$(convert overlay.jpg -print "+%[fx:w+50]+0" null:)

echo $geom   # this is just to show what is happening - you don't need it
+150+0

convert background.jpg overlay.jpg -gravity northeast -geometry $geom -composite out.jpg

当然,您可以在一个命令中执行此操作:

convert background.jpg overlay.jpg -gravity northeast -geometry $(convert overlay.jpg -print "+%[fx:w+50]+0" null:) -composite out.jpg

enter image description here

原始答案

我很抱歉,但我仍然不明白你在问什么,所以我会回答我的意思,也许你可以解释我的理解有什么不妥。

convert -size 500x500! xc:red  background.jpg    # make a big red background
convert -size 100x100! xc:blue overlay.jpg       # make a smaller blue overlay

# place overlay on image at desired position
convert background.jpg overlay.jpg -geometry +360+40 -composite out.jpg    

enter image description here