#svg #cleaner #optimization #cleanup

bin+lib svgcleaner

svgcleaner 可帮助您清理 SVG 文件中的冗余数据

10 个版本

使用旧的 Rust 2015

0.9.5 2018年7月30日
0.9.4 2018年3月22日
0.9.3 2018年1月17日
0.9.2 2017年12月16日
0.7.1 2016年11月4日

#8 in #optimizer

Download history 71/week @ 2024-03-11 47/week @ 2024-03-18 35/week @ 2024-03-25 52/week @ 2024-04-01 32/week @ 2024-04-08 44/week @ 2024-04-15 41/week @ 2024-04-22 30/week @ 2024-04-29 33/week @ 2024-05-06 30/week @ 2024-05-13 30/week @ 2024-05-20 68/week @ 2024-05-27 47/week @ 2024-06-03 162/week @ 2024-06-10 37/week @ 2024-06-17 100/week @ 2024-06-24

354 每月下载量

GPL-2.0 许可证

340KB
9K SLoC

svgcleaner 构建状态

svgcleaner 帮助您清理 SVG 文件,使其保持无冗余数据。


目录

目的

svgcleaner 的主要目的是在发布之前无损地减小矢量编辑应用程序创建的 SVG 图像的大小。

通常,一个 SVG 图像的数据中超过一半对于渲染是无用的。例如

  • 矢量编辑应用程序使用的临时数据
  • 非最优的 SVG 结构表示
  • 未使用且不可见的图形元素

... 在发布的 SVG 中都是不必要的。

目标

  1. 正确性 - svgcleaner 不应破坏 SVG 文件
  2. 清理比率 - 越高越好
  3. 性能 - 平均 SVG 文件处理时间应该在现代 PC 上接近 ~1ms

替代方案

除了以下描述的 svgcleaner 的主要优点——如正确性、清理比率和性能之外,还有一些需要注意的细节

  1. svgcleaner 只清理一个 SVG 文件。它不处理 SVGZ 文件。它不处理目录。它不执行其他任何事情。只是单一任务*。
  2. svgcleaner 默认严格无损。默认未启用任何破坏性清理选项。
  3. svgcleaner 是便携式的。您可以将其构建为一个无任何外部依赖的单个可执行文件。

* 您可以使用 GUI 获取所有这些功能。

图表

有关详细信息,请参阅 测试说明

所有统计数据都是使用最新发布版本收集的。

正确性

越少越好。

docs/images/correctness_chart_W3C_SVG_11_TestSuite.svg docs/images/correctness_chart_oxygen.svg

清理比率

越多越好。

docs/images/ratio_chart_W3C_SVG_11_TestSuite.svg

* scour 创建的文件更大(-18.78%)。

docs/images/ratio_chart_oxygen.svg

清理时间

越少越好。

docs/images/performance_chart_W3C_SVG_11_TestSuite.svg docs/images/performance_chart_oxygen.svg

其他

收集 大小(MiB) 大小(MiB) 比率(%)
Breeze 图标主题 21.72 11.09 48.91
Ardis 图标主题 11.82 5.23 55.74
Humanity 图标主题 8.56 3.08 64.01
Open Icon Library 207.45 69.44 66.53
Elementary 图标主题 17.72 7.09 59.95
Adwaita 图标主题 2.21 0.37 83.08
搪瓷图标主题 22.35 11.14 50.16
GCP 图标 0.344 0.082 75.9

文档

文档可在此处找到:此处

局限性

svgcleaner 除非您告诉它,否则不会更改您的文件,但仍有一些内容无法保留。因此,即使禁用所有清理选项,仍然会有一些内容会被更改,例如

  • 原始缩进不会被保留
  • 所有颜色都将格式化为 #RRGGBB 和 #RGB
  • DOCTYPE, CDATA 将被处理并删除
  • CSS 支持有限
  • CSS 来自style元素的将被提取并处理。该style元素将被删除。
  • style属性将被拆分为属性
  • class属性将被处理并删除
  • 路径和变换将被重新格式化
  • currentColorinherit属性值将被解析
  • 引用的元素将被移动到defs元素
  • IRI 和 FuncIRI 属性如果引用了不存在的对象将被删除
  • 如果offset属性值中的stop元素表示为百分比 - 它将被转换为十进制数字

用法

命令行界面

svgcleaner in.svg out.svg

更改默认选项

svgcleaner --indent=2 --paths-coordinates-precision=5 --join-arcto-flags=yes in.svg out.svg

使用--help获取清理选项列表,并查看文档以获取更多详细信息。

图形用户界面

您可以从此处获取图形用户界面。

下载

您可以从此处获取预构建包。

构建

依赖项:Rust >= 1.20

cargo build --release

如果您是 Rust 程序员,可以使用以下方式安装 svgcleaner

cargo install svgcleaner

贡献和问题

有关详细信息,请参阅CONTRIBUTING.md

常见问题解答

有关详细信息,请参阅FAQ.md

许可证

svgcleaner 适用于GPL-2.0

依赖项

~2.5MB
~38K SLoC