sa1*_*125 8 svg png imagemagick rsvg
我正在使用ImageMagick的convert
实用程序将SVG文件转换为PNG图像.起初,我在OSX(brew install imagemagick
)上使用IM的vanilla安装来转换SVG:
$ convert file.svg file.png
Run Code Online (Sandbox Code Playgroud)
除了该文件中的某些图像对象是偏移的(实际链接到图像)之外,这个工作正常.然后我读了一个相关的问题,建议使用rsvg支持编译ImageMagick (自制软件用它brew install imagemagick --use-rsvg
).
现在,当我尝试执行转换时,不会渲染任何图像.我尝试使用此SVG文件,生成的PNG为空.但是,如果SVG上存在任何文本,则会将其呈现在正确的位置.任何想法如何进行?谢谢.
Kur*_*fle 18
您应该运行此命令以查看ImageMagick尝试使用的所有"委托"的列表:
convert -list delegate
Run Code Online (Sandbox Code Playgroud)
要发现ImageMagick用于SVG处理的委托命令,请运行
convert -list delegate | grep 'svg ='
Run Code Online (Sandbox Code Playgroud)
您应该看到convert
尝试使用的二进制+命令行参数.我是我的情况/opt/local/bin/rsvg-convert
(但我不使用Homebrew,我使用MacPorts).
现在检查系统上是否存在二进制文件:
/opt/local/etc/ImageMagick/delegates.xml
- 我不知道Homebrew存放在哪里.但是,由于您未经修改的安装已经在运行,因此必须在工作中使用SVG消费委托.否则,你就不会得到处理的任何SVG 可言.
ImageMagick的这种内部SVG渲染方法称为MSVG.这远不是一个功能完整的SVG解释器/渲染器.
更新:
要查看ImageMagick正在为哪种格式执行的操作,请运行以下命令:
convert -list format
Run Code Online (Sandbox Code Playgroud)
并为SVG运行
convert -list format | grep SVG
Run Code Online (Sandbox Code Playgroud)
我的系统输出是:
MSVG SVG rw+ ImageMagick's own SVG internal renderer
SVG SVG rw+ Scalable Vector Graphics (RSVG 2.36.1)
SVGZ SVG rw+ Compressed Scalable Vector Graphics (RSVG 2.36.1)
Run Code Online (Sandbox Code Playgroud)
安装后rsvg
,渲染SVG的内部方法不会消失.您仍然可以通过添加MSVG:
到命令行来强制ImageMagick使用内部渲染器,如下所示:
convert MSVG:file.svg file.png
Run Code Online (Sandbox Code Playgroud)
只是为了完整'...