我在Mac OS,Linux 64bit(2系统)和RedHat上安装了ImageMagick。
我有一个包含以下内容的简单SVG文件:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100px" height="100px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
<g>
<rect x="15" y="15" style="fill:none;" width="70" height="70"/>
<path d="M85,0H15H0v15v70v15h15h70h15V85V15V0H85z M85,85H15V15h70V85z"/>
</g>
</svg>
当我在MAC OSX,RedHat甚至我的一个Linux设置上使用:
进行转换时convert -fill 'rgb(255,0,0)' image.svg test.png
它正确转换文件,即它将颜色更改为红色。
但是,在其他Linux设置中,它不会着色,但仍保持黑色。
在我从源上安装ImageMagick的所有系统上。都有相同的版本。执行时全部给出"rsvg-convert" -o "%o" "%i"
:
convert -list delegate | grep 'svg => '
但我不知道为什么我的Linux设置之一无法正常运行。
答案 0 :(得分:1)
将-verbose
添加到您的转换命令:
convert -verbose -fill 'rgba(255,0,0,0)' image.svg test.png
然后在每个系统上再次测试。比较每种情况的输出。
-verbose
在终端输出中报告确切的委托命令行将在后台运行,以产生ImageMagick可以自行处理的最终格式。
例如,在我当前的系统(OSX Mavericks)上,因为我的设置与您的设置不同,我的转换不会填充到SVG中,我会在终端中看到这个:
"/opt/local/bin/inkscape" "/var/tmp/magick-31893m0w2-x4pHlPY" \
--export-eps="/var/tmp/magick-31893y4-KtfXirywn" \
--export-dpi="90,90" --export-background="rgb(100%,100%,100%)" \
--export-background-opacity="1" > \
"/var/tmp/magick-31893J8WlJy8Sn0uH" 2>&1
/var/tmp/magick-31893M9guCq3EvFL71 PNG 80x80 80x80+0+0 8-bit sRGB 351B 0.000u 0:00.000
/var/tmp/magick-31893y4-KtfXirywn PS 80x80 80x80+0+0 16-bit sRGB 351B 0.000u 0:00.000
img.svg=>/var/tmp/magick-31893y4-KtfXirywn PS 80x80 80x80+0+0 16-bit sRGB 351B 0.000u 0:00.000
img.svg=>out.png PS 80x80 80x80+0+0 8-bit sRGB 3c 463B 0.000u 0:00.000
[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 \
"-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
"-r72x72" -g80x80 "-sOutputFile=/var/tmp/magick-31893M9guCq3EvFL7%d" \
"-f/var/tmp/magick-31893VjGeCPBsW7zN" \
"-f/var/tmp/magick-31893OxqHgutvF5QZ"
正如您所看到的,在我的情况下,将Inkscape作为委托将SVG转换为EPS,然后使用Ghostscript将EPS转换为PNG(使用alpha通道)....
答案 1 :(得分:1)
试试这个:
convert -fill 'rgb(255,0,0)' MSVG:test.svg test.png
它使用ImageMagick自己的SVG内部渲染器MSVG,而不是RSVG库。更多信息:http://imagemagick.org/Usage/draw/#svg
但是,MSVG不是一个完整的SVG转换器,因此某些SVG文件可能无法正确呈现。