39

如何使用 ImageMagick 将 JPEG 图像转换为 SVG 格式?

4

3 回答 3

54

you'll need to use potrace and convert to a bitmap first.

$convert input.jpg output.ppm
$potrace -s output.ppm -o svgout.svg
于 2012-09-26T18:45:06.517 回答
32

实际上,完整安装最新版本的 ImageMagick 应该很简单:

convert  some.jpeg  some.svg

当然,ImageMagick 不能自己做这一切——它使用委托(帮助程序)来处理 SVG 输入或输出。(其他答案已经指出了这一点。)

要查看所有委托(及其各自的命令)的(部分)列表,请运行

convert  -list delegate

要查看隐藏所有代理机密的配置文件,请参阅

convert  -list delegate | grep delegates.xml

要查看 SVG 处理委托的(部分)列表,请运行

convert  -list delegate | grep -i svg

然而,ImageMagick 喜欢将它的一些外部帮助实用程序置于“隐身”模式,并且在使用上述命令时不一定会显示它们的存在。

只需查看delegates.xml文件本身。在我的系统上是:

grep -i svg /opt/local/etc/ImageMagick/delegates.xml | grep -i --color stealth

  <delegate decode="autotrace" stealth="True" \
            command="&quot;/opt/local/bin/convert&quot; &quot;%i&quot; \
            &quot;pnm:%u&quot;\n\
            &quot;/opt/local/bin/autotrace&quot; \
           -input-format pnm \
           -output-format svg \
           -output-file &quot;%o&quot; &quot;%u&quot;"/>

  <delegate decode="svg:decode" stealth="True" \
            command="&quot;/opt/local/bin/inkscape&quot; &quot;%s&quot; \
            --export-png=&quot;%s&quot; \
            --export-dpi=&quot;%s&quot; \
            --export-background=&quot;%s&quot; \
            --export-background-opacity=&quot;%s&quot; \
            &gt; &quot;%s&quot; 2&gt;&amp;1"/>

如您所见,在我的系统上,ImageMagick 安装会自动使用(以及其他)...

  • ...inkscape将 SVG 转换为 PNG;
  • ...autotrace将 PNM 转换为 SVG;

当然,人们可能会争论autotrace直接使用的好处——但这需要先手动将输入格式转换为 PNM。所以对于这个初步步骤,你可能无论如何都会使用 ImageMagick ......

于 2012-09-26T19:20:50.400 回答
17

您实际上需要一些软件或代码来将您的图像矢量化,因为 jpg 是一种光栅格式,而 SVG 是一种矢量格式。我认为仅 imagemagick 无法为您做到这一点。

于 2009-07-15T16:57:52.477 回答