在ImageMagick中投影后的黑色背景(而不是透明)

时间:2014-10-10 10:09:40

标签: svg imagemagick png jpeg imagemagick-convert

我试图将阴影投射到两个图像的合成上:一个JPEG / PNG和一个SVG矢量。使用PNG图像,一切都可以无缝运行。现在,尝试使用JPEG,我得到一个黑色背景,而不是预期的透明背景。

命令如下所示:

convert image.jpeg -background white -flatten \( -background none vector.svg \) -compose CopyOpacity -gravity center -composite \( \+clone -background \#111 -shadow 80x5\+5\+5 \) -background none -compose DstOver -flatten result_from_jpeg.png

我们从这个JPEG开始:

image.jpeg

或此PNG:

image.png

然后我们组合矢量,因为它是白色的,你将无法看到原始的,所以这里有一个网格:

vector_over_grid.png

真正的向量就是这个:http://cl.ly/Xymi/vector.svg

然后我们放下阴影。从PNG开始,我们做对了(透明背景):

result_from_png.png

但使用JPEG时,背景为黑色:

result_from_jpeg.png

所有文件都可以通过ZIP格式下载:http://cl.ly/Xz8V/Archive%202014-10-10%20at%2011.34.55%20am.zip

关于可能发生的事情的任何想法?在此先感谢!!

编辑:

我的IM版本:

Version: ImageMagick 6.8.8-9 Q16 x86_64 2014-03-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib freetype jng jpeg lcms ltdl png tiff xml zlib

我在Mac OSX上开发。

1 个答案:

答案 0 :(得分:0)

好的问题解决了!! snibgo帮助我完成了ImageMagick论坛。

即使我们无法理解我的设置与尝试过但没有观察到问题的其他人之间的区别,我们确实将命令的阴影部分重构为更正确的方式实际上对两个来源都有效,jpeg和png:

convert image.jpeg -background white -flatten \
    \( -background none vector.svg \) \
    -compose CopyOpacity -gravity center -composite \
    \( +clone -background \#111 -shadow 80x5+5+5 \)
    +swap -background None -compose Over -layers merge \    # This is new
    correct_output.png

整个讨论可以在这里找到:

http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=26363