17

我最近在网上搜索工具、程序、实用程序、支持库和代码原语,这些工具、程序、实用程序、支持库和代码原语有助于优化 SVG 的简单性、空间和优雅性,以链接到Kilobyte SVG Challenge工具部分,但还没有找到好的原语关注关于如何减少路径坐标的数量,而不会损失太多——或者理想情况下是任何——精度。

以这个可口可乐标志的标记增强版本为例(~7kb,基本上所有路径数据)——它非常清楚地显示了减少贝塞尔数量的许多承诺,给定一些工具来进行数学运算以得出一个使用较少节点的路径,同时产生基本相同的曲线。

对于更简单的多边形和折线问题(阅读“全线路径”),您可以使用 Douglas–Peucker 或 Visvalingam 的算法(参见Mike Bostock对后者的出色 d3 实现)来简单地删除对路径形状影响最小的坐标直到您对适合您需求的尺寸精确度感到满意为止。

我正在寻找可以注意到较大曲线(甚至弧)段可以替换许多这些冗余的中间曲线坐标停止点的等效项,而无需进行大量手动调整。我认为一些矢量图形包(Adobe Illustrator,甚至可能是 Inkscape?)可能会提供这样的功能(欢迎使用有关如何访问它们的提示!) - 尽管我很想找到我们可以推荐的可编写脚本的工具并提供如何使用的 HOWTO命令行,甚至是网络应用程序,它们会为人们挤出多余的路径填充材料。

作为参考,千字节 SVG 挑战赛是我最近设置的一个有趣的 SVG 教育和宣传噱头。所有关于它的非问题主题讨论最好在那里举行,和/或在上面链接的 github 存储库上。保持好状况!:)

4

1 回答 1

4

You can use Ramer–Douglas–Peucker algorithm to simplify polylines or polygons path.

enter image description here

于 2013-12-28T15:26:20.000 回答