跳到主要内容
AZ Tools

SVG 优化

从设计软件导出的 SVG,很大一部分根本不参与绘制:编辑器的元数据、一整块注释、图层名、写到小数点后六位的坐标,以及只是在重复默认值的属性。本工具对你粘贴或拖入的内容运行 SVGO——构建工具用的就是它——并把结果放在原件旁边:新的标记、前后体积、gzip 之后的体积(服务器实际发送的量),以及两个版本的渲染图,让你一眼确认什么都没坏。开关只保留实际有用的几个:坐标精度、是否保留 CSS 或 JavaScript 可能引用的 ID、是否去掉 width 和 height 让图标随容器缩放。全部处理都在页面内完成,文件不会上传。

SVG 源码

全部处理都在你的浏览器中完成——文件不会上传。

使用方法

  1. 把 SVG 粘贴进文本框,或把 .svg 文件拖进去。
  2. 点击「优化」。体积、gzip 后体积和两个渲染图会显示在下方。
  3. 如果文件还是偏大,就调低精度——1 到 2 位小数通常看不出来。
  4. 如果 CSS 或 JavaScript 会指向 SVG 内部的元素,请打开「保留 ID」。
  5. 复制结果,或下载为 .svg。

常见问题

我的 SVG 会被上传吗?
不会。SVGO 在浏览器标签页内运行,处理的是文本框里的文字。没有任何内容发送到服务器,关闭标签页也不会留下副本。
两个预览看起来一模一样,这正常吗?
正常,这正是目的。优化会去掉不参与绘制的内容,并把绘制的部分改写成更短的形式。如果两个预览不一样,说明文件依赖了被去掉的东西;把精度调高或打开保留 ID 再试一次。
什么时候该保留 ID?
当 SVG 之外的东西引用它们时:像 `#icon-star path` 这样的 CSS、调用 getElementById 的 JavaScript,或另一个文件里的 `<use href="#…">`。SVGO 默认会缩短 ID 以省字节,那样这些引用就断了。如果是自包含的单个文件,内部引用会一并更新,两种设置都正确。
精度滑块到底改变了什么?
它对路径数据里的数字做四舍五入。像 12.345678 这样的坐标,精度 3 时变成 12.346,精度 1 时变成 12.3。屏幕上的图标用一两位小数通常看不出差别,路径却可能短一半。而对大幅或需要放大观看的插画,舍得太狠会表现为曲线上的抖动。
为什么要显示 gzip 后的体积?
因为真正传输的是那个数字。Web 服务器会压缩 SVG,原始字节数会夸大节省量——去掉重复空白在磁盘上看着惊人,经过 gzip 后几乎不剩什么。压缩后的那一对才是诚实的对比。
该去掉 width 和 height 吗?
如果 SVG 是内联使用、由 CSS 决定尺寸,就去掉——它会填满给它的盒子。如果用在 `<img>` 标签里,或任何浏览器需要固有尺寸的地方,就保留,否则可能按默认尺寸绘制。viewBox 始终保留;没有它,图形就失去了可供缩放的坐标系。

相关工具