19

我已使用以下命令成功地将 PNG 转换为 SVG:

convert Slide3.png Slide3_converted.svg

问题是生成的文件高达 380MB!

我尝试了这个版本的命令:

convert -size 2000x1200 Slide3.png Slide3_converted_smaller.svg

但没有骰子。大小相同。

4

1 回答 1

19

SVG 是一种矢量图像格式,因此将光栅图像(jpg、png、gif 等)转换为 svg 可能是一项复杂的任务。

我尝试使用以下方法转换一个简单的图像:带有红色圆圈和蓝色方块的白色背景:

convert input.png output.svg

这是此命令创建的 svg 文件的示例:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="800" height="600">
  <circle cx="0" cy="0" r="1" fill="white"/>
  <circle cx="1" cy="0" r="1" fill="white"/>
  ...
  <circle cx="218" cy="151" r="1" fill="rgb(255,247,247)"/>
  <circle cx="219" cy="151" r="1" fill="rgb(255,40,40)"/>
  <circle cx="220" cy="151" r="1" fill="red"/>
  <circle cx="221" cy="151" r="1" fill="rgb(255,127,127)"/>
  <circle cx="222" cy="151" r="1" fill="white"/>
  <circle cx="223" cy="151" r="1" fill="white"/>
  ...
  <circle cx="799" cy="599" r="1" fill="white"/>
</svg>

基本上 ImageMagick 为每个像素创建了一个半径为 1px 的圆,并以正确的颜色绘制它。从 5KB png 开始,我的输出是 22MB svg,这解释了您获得的巨大文件大小。

根据 ImageMagick 文档(参见此处),这是因为缺少“ AutoTrace ”(参见此处)库:

“如果没有安装“AutoTrace”库并编译到 IM 中,那么生成的 SVG 输出将是大量的单像素圆圈,生成二进制结果,而不是平滑的 SVG 轮廓图像。这样的图像比较巨大,并且通常需要很长时间才能通过 SVG 渲染进行渲染。”

一旦你安装了 AutoTrace 库,你可以尝试这样的事情:

convert autotrace:A.gif  A_traced.png
于 2013-09-12T14:01:25.113 回答