将SVG多边形转换为开放曲线

时间:2015-05-14 12:47:37

标签: svg vector-graphics gimp inkscape

让我们在其SVG表示中考虑简单的跟随图像(运行代码片段将显示它):

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" height="200" width="200">
  <g>
    <path d="m 90.200184,21.865233 13.886726,0 0,91.406257 q 0,8.4375 -4.306646,11.86524 -3.7793,2.72461 -13.35938,2.72461 -10.37109,0 -18.19336,-1.05469 l -2.46094,-13.53516 q 11.07422,2.02148 18.45704,2.02148 5.97656,0 5.97656,-5.97656 l 0,-87.451177 z"/>
  </g>
</svg>

SVG路径实际上是形状周围的点的集合,而它可以是简单的自上而下的倾斜曲线(红线here)。不幸的是,我提供了这些图片,并且无法更改它们。

我正在寻找一种将SVG多边形转换为SVG开放曲线的方法。,可以直接转换,也可以分几步转换。

欢迎任何解决方案,但我的偏好是这个顺序:

  1. 以编程方式(以便我可以编写脚本);
  2. 使用Inkscape或GIMP(或任何其他Linux程序);
  3. 嗯,任何有用的东西。
  4. 谢谢,

2 个答案:

答案 0 :(得分:0)

是否就像从路径中删除结束z一样简单?

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" height="200" width="200">
  <g>
    <path d="m 90.200184,21.865233 13.886726,0 0,91.406257 q 0,8.4375 -4.306646,11.86524 -3.7793,2.72461 -13.35938,2.72461 -10.37109,0 -18.19336,-1.05469 l -2.46094,-13.53516 q 11.07422,2.02148 18.45704,2.02148 5.97656,0 5.97656,-5.97656 l 0,-87.451177"/>
  </g>
</svg>

或者您正在寻找比这更复杂的东西吗?

显然,删除结束z很容易用您选择的编程语言编写脚本。

答案 1 :(得分:0)

这类算法通常被称为找到&#34;骨架&#34;或&#34;内侧轴&#34;。如果您搜索这些术语,您将找到描述不同潜在方法的论文和其他文档。许多/大多数情况下通常都是从位图开始。

https://en.wikipedia.org/wiki/Topological_skeleton