Cal*_*phi 3 css svg png imagemagick imagemagick-convert
我通过命令行使用ImageMagick将简单的SVG转换为具有透明背景的PNG,但由于某种原因它无法正常工作.
我已经尝试了一些注意的建议在这里(包括convert -background none in.svg out.png和convert -background transparent in.svg out.png),但没有运气.
这是SVG的来源:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="130" height="130"
stroke-width="8"
stroke="#303030" stroke-linejoin="round"
style="background-color: rgba(255,255,255,0);"
>
<g transform="translate(65,65)">
<path fill="red" d="M60,0 h-120 a60,60 0 0 1 120,0" />
<path fill="white" d="M60,0 h-120 a60,60 0 0 0 120,0" />
<circle fill="white" r="20" />
<circle stroke-width="2" fill="white" r="10" />
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
这是ImageMagick的版本输出convert(在Mac OS X 10.7.3上运行):
calyodelphi@dragonpad:~/pokemon-story $ convert -version
Version: ImageMagick 6.8.9-0 Q16 x86_64 2014-04-22 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib djvu fftw fontconfig freetype gslib jng jpeg lcms ltdl lzma png ps tiff webp x xml zlib
Run Code Online (Sandbox Code Playgroud)
关于我做得不正确(或根本没有)的任何想法?
编辑
从Timo的建议中添加这些信息:详细输出以查看ImageMagick委派转换的位置.看起来它正在使用inkscape,我几乎已经证实(实际上我自己直接使用inkscape)没有成功渲染透明背景.
calyodelphi@dragonpad:~/pokemon-story $ convert -verbose -background transparent wiki-logo.svg wiki-logo-trans.png
"inkscape" "wiki-logo.svg" --export-png="/var/tmp/magick-232uT59InIw0vnO" --export-dpi="90,90" --export-background="rgb(0%,0%,0%)" --export-background-opacity="0" > "/var/tmp/magick-232vUkxcro2TpS3" 2>&1
mvg:/var/tmp/magick-232yXpy3JTgdpkm=>/var/tmp/magick-232yXpy3JTgdpkm MVG 130x130 130x130+0+0 16-bit sRGB 552B 0.010u 0:00.000
wiki-logo.svg SVG 130x130 130x130+0+0 16-bit sRGB 552B 0.000u 0:00.000
wiki-logo.svg=>wiki-logo-trans.png SVG 130x130 130x130+0+0 16-bit sRGB 10.6KB 0.000u 0:00.009
Run Code Online (Sandbox Code Playgroud)
Inkscape版本是 Inkscape 0.48.2 r9819
浪潮
你正确地做了,我只是尝试了你提供的两个命令(convert -background none in.svg out.png和convert -background transparent in.svg),它们都为我生成了一个带有透明背景的漂亮PNG.
这是两个输出图像:

我的版本信息(在OS X 10.10.1上):
Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-10-23 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib freetype jng jpeg ltdl lzma png xml zlib
Run Code Online (Sandbox Code Playgroud)
您可以使用其他-verbose参数运行命令.这将向您显示+ ImageMagick用于SVG处理的外部'委托'软件:
convert -verbose -background none in.svg out.png
Run Code Online (Sandbox Code Playgroud)
对不起,我无法提供更多帮助.
编辑:这是我的详细输出:
? /tmp convert -background transparent -verbose in.svg out2.png
"inkscape" "in.svg" --export-eps="/var/tmp/magick-71670YVLm4mRNHwOZ" --export-dpi="90,90" --export-background="rgb(0%,0%,0%)" --export-background-opacity="0" > "/var/tmp/magick-71670DClhbmEIL8wY" 2>&1
mvg:/var/tmp/magick-71670MHFJb-BHacGd=>/var/tmp/magick-71670MHFJb-BHacGd MVG 130x130 130x130+0+0 16-bit sRGB 552B 0.000u 0:00.000
in.svg MVG 130x130 130x130+0+0 16-bit sRGB 552B 0.000u 0:00.000
in.svg=>out2.png MVG 130x130 130x130+0+0 16-bit sRGB 10.6KB 0.010u 0:00.009
Run Code Online (Sandbox Code Playgroud)