你应该运行这个命令来查看你的 ImageMagick 试图使用的所有“代表”的列表:
convert -list delegate
要发现 ImageMagick 用于 SVG 处理的委托命令,请运行
convert -list delegate | grep 'svg ='
您应该看到您convert
尝试使用的二进制 + 命令行参数。我的情况是/opt/local/bin/rsvg-convert
(但我没有使用 Homebrew,我使用 MacPorts)。
现在检查系统上是否存在二进制文件:
- 如果是,请直接运行它并从那里调试。
- 如果不是,请尝试查找 Homebrew 安装的位置,并更改 ImageMagick 的代理配置文件。它被称为delegates.xml。MacPorts 将它放入
/opt/local/etc/ImageMagick/delegates.xml
——我不知道 Homebrew 将它存储在哪里。
但是,由于您的未修改安装已经在工作,因此当时肯定已经有一个 SVG 消费委托在工作。否则,您根本不会处理任何 SVG 。
ImageMagick 的这种内部 SVG 渲染方法称为 MSVG。这远不是一个功能完整的 SVG 解释器/渲染器。
更新:
要查看 ImageMagick 针对哪种格式执行的操作,请运行以下命令:
convert -list format
对于 SVG 运行
convert -list format | grep SVG
我的系统上的输出是:
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)
安装后rsvg
,渲染 SVG 的内部方法不会消失。您仍然可以通过添加MSVG:
到命令行来强制 ImageMagick 使用内部渲染器,如下所示:
convert MSVG:file.svg file.png
只是为了完整起见......