ImageMagick中的透明PNG和JPEG组合

时间:2012-05-21 09:06:47

标签: imagemagick

我有一种情况需要在JPEG文件的顶部组合两个透明层。

这是一个示例设置:

wget -O bg.jpg http://www.grahamowengallery.com/photography/Flowers/roadside-flowers.jpg
wget -O layer.png http://www2.picturepush.com/photo/a/6271450/640/TRANSPARENT-EMBELLISHMENTS/pink-flower-transparent-png.png
wget -O logo.png http://upload.wikimedia.org/wikipedia/commons/0/0d/Imagemagick-logo.png

我可以通过命令获得所需的结果:

composite bg.jpg \( -compose Overlay layer.png \) bg2.jpg
composite bg2.jpg \( -compose Overlay logo.png \) result.jpg

这很好,但我想避免将bg2.png写入驱动器。

我试过了:

composite bg.jpg \( -compose Overlay layer.png \) \( -compose Overlay logo.png \) result2.jpg

但这会导致黑色背景上的layer.png。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

我无法让composite工作,但convert有效:

convert.exe bg.jpg layer.png -compose Overlay -composite logo.png -compose Overlay -composite result2.jpg

进一步阅读:http://www.imagemagick.org/Usage/compose/

答案 1 :(得分:2)

我目前无法对此进行测试,但您可以使用图层合并,并且您应该能够使用代码中的网址。

$cmd = "http://www.grahamowengallery.com/photography/Flowers/roadside-flowers.jpg ".
" http://www2.picturepush.com/photo/a/6271450/640/TRANSPARENT-EMBELLISHMENTS/pink-flower-transparent-png.png ".
" http://upload.wikimedia.org/wikipedia/commons/0/0d/Imagemagick-logo.png -layers merge ";
exec(" convert $cmd result.jpg ");

您没有对图层使用任何定位 - 您稍后会介绍吗?如果是这样,您可以在每个图像前面添加-page + 0 + 0,以便将它们定位到您想要的位置。 + 0 + 0将更改为该位置。