为什么ImageMagick在导入SVG时会有不同的处理方式?

为什么ImageMagick在导入SVG时会有不同的处理方式?,svg,imagemagick,imagemagick-convert,Svg,Imagemagick,Imagemagick Convert,我有一个透明的文件q.svg(至少在左上角)。下面是一个命令及其结果: $ convert -verbose -background "#ffffff00" q.svg -depth 8 RGBA:- | ruby -e '$stdin.binmode;p $stdin.read(4)' 'inkscape' '/tmp/magick-18391tJtIEDjjRpHh' --export-png='/tmp/magick-18391Wt5UBvmqqzoj' --export-dpi='96

我有一个透明的文件
q.svg
(至少在左上角)。下面是一个命令及其结果:

$ convert -verbose -background "#ffffff00" q.svg -depth 8 RGBA:- | ruby -e '$stdin.binmode;p $stdin.read(4)'

'inkscape' '/tmp/magick-18391tJtIEDjjRpHh' --export-png='/tmp/magick-18391Wt5UBvmqqzoj' --export-dpi='96,96' --export-background='rgb(100%,100%,100%)' --export-background-opacity='0' > '/tmp/magick-18391_rpBcJRZuR3k' 2>&1
/tmp/magick-18391Wt5UBvmqqzoj PNG 640x384 640x384+0+0 8-bit sRGB 3413B 0.040u 0:00.029
/tmp/work/q.svg SVG 640x384 640x384+0+0 8-bit sRGB 3413B 0.000u 0:00.010
"\x00\x00\x00\x00"
像素是完全透明的黑色。我指定白色作为背景色,但它是完全透明的,这对我来说很好

现在,我以不同的方式运行该命令,通过管道将输入传输到
convert

$ cat q.svg | convert -verbose -background "#ffffff00" SVG:- -depth 8 RGBA:- | ruby -e '$stdin.binmode;p $stdin.read(4)'

'inkscape' '/tmp/magick-18396DKgnVvgUiunU' --export-png='/tmp/magick-18396vzaREmaEV3VO' --export-dpi='96,96' --export-background='rgb(100%,100%,100%)' --export-background-opacity='0' > '/tmp/magick-18396hHG-MP4569rJ' 2>&1
mvg:/tmp/magick-18396ZW9toKj2UPw8=>/tmp/magick-18396ZW9toKj2UPw8 MVG 640x384 640x384+0+0 16-bit sRGB 669B 0.280u 0:00.280
SVG:-=>- MVG 640x384 640x384+0+0 16-bit sRGB 669B 0.000u 0:00.010
"\xFF\xFF\xFF\x00"
结果现在不同了,过程也明显不同了——一些MVG出现在详细日志中。为什么这不一样?!一些像素(在SVG中不是透明的)这次在完整结果中实际上是不正确的

如果我将输入指定为
-
而不是
SVG:-
,那么我显然会从第一个示例返回行为。所以我可能会通过一些诡计得到我想要的结果,但我更愿意了解发生了什么。如何选择“输入引擎”或任何东西?为什么在运行inkscape之后还要涉及MVG?如果我真的想指定SVG,我应该使用什么输入类型来正确解析它

版本信息:

$ convert -version
Version: ImageMagick 6.9.10-23 Q16 arm 20190101 https://imagemagick.org

我认为使用
SVG:-
是在Inkscape获得它之前将它作为MVG文件读取。请参阅inkscape info
SVG:-=>-MVG
中的详细信息。能否共享您的
q.SVG
?我无法用
ImageMagick 7.0.10-13 Q16 x86_64 2020-05-17和Inkscape中创建的这个简单SVG来重现这一点:-所有三个版本都给了我
“\x00\x00\x00\x00\x00”
。Laurenz,我实际上更新了出现此问题的系统,ImageMagick和Inkscape都更新到了更高的版本,我现在无法自己复制它。。。这个问题仍然有效:基于指定的类型、文件扩展名(如果已知)和文件内容,选择加载程序的确切逻辑是什么。