我已使用以下命令成功地将 PNG 转换为 SVG:
convert Slide3.png Slide3_converted.svg
问题是生成的文件高达 380MB!
我尝试了这个版本的命令:
convert -size 2000x1200 Slide3.png Slide3_converted_smaller.svg
但没有骰子。大小相同。
我已使用以下命令成功地将 PNG 转换为 SVG:
convert Slide3.png Slide3_converted.svg
问题是生成的文件高达 380MB!
我尝试了这个版本的命令:
convert -size 2000x1200 Slide3.png Slide3_converted_smaller.svg
但没有骰子。大小相同。
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