ImageMagick png to svg Image Size

时间:2013-09-10 17:34:44

标签: image-processing imagemagick

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

convert Slide3.png Slide3_converted.svg

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

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

convert -size 2000x1200 Slide3.png Slide3_converted_smaller.svg

但没有骰子。相同的大小。

1 个答案:

答案 0 :(得分:14)

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文档(请参阅here),这是因为“ AutoTrace ”(请参阅​​here)库缺失:

  

“如果未安装”AutoTrace“库并将其编译为IM,   那么生成的SVG输出将是一个巨大的单个像素   圈子,生成二进制结果,而不是概述的平滑SVG   图片。这些图像通过比较是巨大的,并且通常需要很长时间   时间由SVG渲染渲染。“

安装完AutoTrace库后,您可以尝试使用以下内容:

convert autotrace:A.gif  A_traced.png