为什么要压缩SVG
SVG是文本格式的矢量图,从Illustrator、Figma、Inkscape导出的文件往往夹带大量编辑器元数据、冗余属性和超长小数坐标,体积翻好几倍。网页里每加载一个图标都要下载它,压缩SVG能直接减小流量、加快首屏。实测一个设计软件导出的图标,压缩后通常可减30%以上体积。
清理项明细
| 清理项 | 示例 | 影响 |
|---|---|---|
| 元数据元素 | <metadata>、<desc>、<title> | 无渲染作用,纯编辑器记录 |
| 编辑器元素 | sodipodi:namedview | Inkscape私有节点 |
| 编辑器属性 | inkscape:xxx、sodipodi:xxx | 命名空间属性残留 |
| 冗余宽高 | 已有viewBox时的width/height | viewBox已能控制缩放比例 |
| 多余空白 | 标签之间的换行与缩进 | 合并为紧凑单行输出 |
注意:如果SVG在浏览器标签页上单独打开,<title>承担着标签页标题的作用;作为图标内联或img引用使用时则可安全移除。
数字精度舍入
设计软件导出的坐标经常是d="M123.4567890123,45.67890123"这样十几位小数,而屏幕渲染到小数点后两位已经无法分辨。工具按你选择的精度(0~4位)对数值属性(坐标、宽度、描边宽度等)与style属性里的数字统一舍入,舍入时会去掉尾随零(如1.50变成1.5)。
提示:小图标用2位精度足够;大面积插画建议3位,避免曲线在高分屏上出现细微锯齿。若发现图形变形,退回更高精度重新压缩即可。
使用方法
- 把SVG源码粘贴进输入框,或点击"示例"加载演示文件;
- 按需调整清理选项与数字精度;
- 点击"压缩",右侧输出压缩结果并显示前后字节与节省比例;
- 对比上下两个预览画面的渲染效果,确认无变形后点"复制"或"下载"。
预览用img方式渲染,SVG内部的脚本不会执行,来源不明的文件也安全。
使用场景
图标入库:设计稿导出的图标统一过一遍压缩再进组件库,几十个图标的累计体积差距很明显。
雪碧图/内联:SVG要内联进HTML时,体积越小越好,元数据清掉还能避免污染DOM。
小程序/APP:包体积敏感的场景,矢量资源压缩是零风险的瘦身手段——渲染结果不变。
使用建议
隐私:解析与压缩全部在浏览器本地完成,未发布的品牌素材不会外传。
验证习惯:每次压缩后先看预览对比再下载,重点检查渐变、蒙版和文字曲线;文件将被脚本动态操作(如按class选择节点)时,确认所选清理项不会误删需要的class属性。