跳到正文

SVG 路径编辑器

SVG Path Editor

在绝对和相对命令之间转换路径数据,做平移、缩放、旋转和方向反转,并显示包围盒和实时预览。

读取一个 `d` 属性,给回一个变换过的:绝对或相对、移动、缩放、绕包围盒中心旋转、反向,以及取整到你选择的小数位数。它通过 Path2D 绘制结果,所以浏览器按 SVG 渲染器同样的方式做圆弧数学,并报告包围盒和一个可以粘贴的 viewBox。

🔒 完全在你的浏览器里运行svgpathvectoredit

path 的 d 属性

命令形式

预览

虚线矩形是包围盒,红点是起点。填充用的是 nonzero 规则。

结果

命令

18

子路径

3

数字

32

字节

113 → 97

包围盒

x 2.00 y 2.00 w 20.00 h 20.00

viewBox

2.00 2.00 20.00 20.00

它做什么

  • · 用的是和 SVG 优化压缩一样的解析器,所以像 1.5.5 这种压掉分隔符的写法、还有弧线的标志位,都能读对。它能在绝对和相对之间互转、按位数取整、平移、缩放、绕包围盒中心旋转、反转方向,并算出包围盒。
  • · 一旦旋转,H 和 V 就变成 L,弧线的半径、x 轴旋转角和 sweep 标志位会按 SVG 1.1 附录 F.6 的公式重算。包围盒取的是每段曲线真正的极值,不是它的控制点。
  • · 它不会简化曲线。那会改变形状,容差该定在哪里是人的判断。

要把整个文件缩小,用 SVG 优化压缩;要调曲线的加速方式,用缓动曲线编辑器。

怎么用

  1. 粘贴 d 属性

    只要值,不带外面的 `<path>`。压缩记法可以——`1.5.5` 作为两个数、没有分隔符的圆弧标志——因为解析器是 SVG 优化器的那一个,处理得了这些情况。

  2. 应用你需要的变换

    移动、缩放和旋转应用在几何本身上,所以出来的东西不需要 `transform` 属性。旋转绕包围盒中心,这是对图标来说你要的,而不是原始 `rotate()` 做的。

  3. 选绝对或相对,以及精度

    相对命令通常更短,对内联图标要紧。精度是真正的大小杠杆:三位小数对 24 单位的图标网格绰绰有余,从六位降到两位常常把字符串减半。移动它时看着字节计数器。

  4. 填色看着不对就反转方向

    红点标记起点,所以反转的效果看得见。方向决定内部子路径在 nonzero 规则下是不是洞,也是描边虚线动画跟随的东西。

  5. 取路径,或者 viewBox

    输出框有 `d` 值和一个现成的 `<path>` 元素。统计面板有作为 viewBox 字符串的包围盒,这是让图标精确填满画框最快的办法。

常见问题

为什么它不简化曲线?

因为简化会改变形状,而多大的改变可以接受,是关于这一幅特定图形的判断,工具做不了。每种点数缩减算法都要一个容差,做这个决定的诚实位置是在一个你能看到代价的矢量编辑器里。取整小数是安全的大小杠杆,它在这里。

旋转或缩放时圆弧会怎样?

它们仍然是圆弧。半径、x 轴旋转和扫过标志按 SVG 1.1 附录 F.6 的公式重新计算,这是在非均匀缩放下保持椭圆各轴正确的东西。旋转时 `H` 和 `V` 变成 `L`,因为水平线不再保持水平。

包围盒是从控制点算的吗?

不是,是从每条曲线的实际极值算的。三次曲线的控制点通常在曲线之外,所以控制点盒太大——常常明显太大,而那正是要紧的时候,因为这个盒子是你要粘贴为 viewBox 的东西。

它只处理一条路径。整个文件呢?

这个工具按设计只作用于单个 `d` 值——变换和反向在这个层面上才有意义。对整个文档,SVG 优化器改写其中每一条路径,SVG 编辑器读取它们周围的结构。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。