关于svg:在ImageMagick中放置阴影后为黑色背景(而不是透明)

Black background (instead of transparent) after drop shadow in ImageMagick

我正在尝试为两个图像的组合添加阴影:一个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版本:

1
2
3
4
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上进行开发。


好的问题解决了! snibgo在ImageMagick论坛上为我提供了帮助。

即使我们无法理解我的设置与其他尝试并没有发现问题的人员之间的区别,我们还是将命令的阴影部分重构为一种更正确的方式,实际上对两个来源都适用 ,jpeg和png:

1
2
3
4
5
6
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