跳到正文

压缩 SVG 文件

用 SVGO 在浏览器中清除编辑器冗余数据、缩短路径数据。

将文件拖放到这里

或

选择文件

SVG · JPG · PNG · GIF · TIFF · WebP

文件不会离开您的设备

正在加载压缩工具…

如何压缩 SVG 文件

  1. 添加文件

    把文件拖到框中、粘贴,或从设备中选择。不会上传任何内容。

  2. 检查设置

    默认预设适合大多数文件。如果需要更小的文件,可以调整质量、尺寸或格式。

  3. 下载结果

    逐个保存,或打包成一个 ZIP 全部保存。如果文件无法变小,您会保留原文件。

SVG 是代码,不是像素

SVG(可缩放矢量图形,Scalable Vector Graphics)文件是一份 XML 格式的文本文档,用来描述各种形状:路径、圆形、渐变、文字。因为它包含的是绘图指令而不是像素,所以在任何尺寸下都保持清晰,从 16 像素的网站图标到大型广告牌都是如此。网页上的图标、标志、插画、图表和地图常常是 SVG,这个格式自 2001 年起就是 W3C 标准。

身为文本带来了一个副作用:文件大小取决于编辑器写得有多啰嗦,而不是图片显示得有多大。两个渲染效果完全相同的 SVG,大小可能相差好几倍。

是什么让 SVG 文件变得臃肿

  • 编辑器元数据。Illustrator、Inkscape、Figma 和 Sketch 会加入自己的命名空间、图层名称、导出注释,有时还会嵌入一份可编辑文档的副本。
  • 多余的精度。像 12.483920174 这样的坐标,换成 12.48 在任何实际尺寸下渲染效果都完全一样。
  • 冗余结构。空的分组、隐藏的图层、默认属性值、未使用的定义,以及本可以写得更短的样式。
  • 冗长的路径语法。本可用更短的相对命令却用了绝对命令,重复的命令字母,不必要的空格。
  • 嵌入的位图。粘贴进插画的照片以 Base64 文本存储在 SVG 中,比原始图片文件大约大三分之一。

工具如何优化 SVG

工具在您的浏览器中运行 SVGO,这是一款被广泛使用的开源 SVG 优化器。它会删除元数据和注释,合并无用的分组,缩短路径数据,默认把数值四舍五入到小数点后 3 位(可选 0 到 6 位),并合并样式,反复执行直到再也没有变化。结果仍是一个普通的 SVG,可以用任何编辑器打开,也可以直接粘贴到 HTML 中。在我们对八个 SVG 的测试中,从手工优化过的图标到满是编辑器数据的 Inkscape 导出文件,节省幅度从 8% 到 42% 不等。

严格来说,优化在一个很窄的意义上是有损的:取整会让坐标发生极其微小的变化,编辑器专用的数据也被删除了,所以您无法再以全部原始图层的形式重新打开文件。请保留设计工具中的源文件,把优化后的 SVG 当作发布版本。

服务器通常会用 gzip 或 Brotli 压缩 SVG,在传输到浏览器的途中再次缩小文本。优化和服务器压缩的效果可以叠加,因为被删掉的数据根本不需要再压缩。

优化后的 SVG 出问题时

  • CSS 或 JavaScript 找不到某个元素了。优化器会缩短或删除文件内看似未使用的 ID 和类名。如果您网页的样式或脚本要用到它们,请在发布前检查结果。
  • 图标无法缩放了。SVG 需要 viewBox 属性才能正确缩放。工具会保留它,所以请检查原文件是否有这个属性;只设了固定宽高的 SVG 本来就无法很好地缩放。
  • 细小的形状变形了。在大画布上绘制的超小图标可能受到取整的影响。使用默认精度时这种情况很少见。
  • 文件的主要内容是一张嵌入的照片。把照片单独导出为 JPG 或 WebP 再链接,或者把整个图形转换为位图。

SVG 常见问题

优化后的 SVG 看起来会不一样吗?

在正常尺寸下不会。形状、颜色和文字的渲染效果都一样。如果不放心,可以用前后对比视图检查细线条等细节。

之后还能编辑这个文件吗?

能,任何矢量编辑器都能打开它。丢失的是图层名称、画板等编辑器专用信息,所以请保留原文件以便日后继续设计。

要不要把 SVG 转成 PNG 来减小体积?

通常不需要。一个干净的图标 SVG 往往只有几 KB,而且在任何屏幕上都清晰。只有在目标不接受 SVG 时才转换为 PNG,许多邮件客户端和一些社交网络就不接受 SVG。

优化带动画的 SVG 安全吗?

文件内的 SMIL 和 CSS 动画会被保留,但由外部脚本控制的动画可能依赖 ID。请在实际使用该文件的网页中测试优化后的版本。

相关页面

位图图片请用图片压缩工具处理。想了解哪些处理在本地运行以及原因,请看工作原理。