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
354 每月下载量
340KB
9K SLoC
svgcleaner
svgcleaner 帮助您清理 SVG 文件,使其保持无冗余数据。
目录
目的
svgcleaner 的主要目的是在发布之前无损地减小矢量编辑应用程序创建的 SVG 图像的大小。
通常,一个 SVG 图像的数据中超过一半对于渲染是无用的。例如
- 矢量编辑应用程序使用的临时数据
- 非最优的 SVG 结构表示
- 未使用且不可见的图形元素
... 在发布的 SVG 中都是不必要的。
目标
- 正确性 - svgcleaner 不应破坏 SVG 文件
- 清理比率 - 越高越好
- 性能 - 平均 SVG 文件处理时间应该在现代 PC 上接近 ~1ms
替代方案
除了以下描述的 svgcleaner 的主要优点——如正确性、清理比率和性能之外,还有一些需要注意的细节
- svgcleaner 只清理一个 SVG 文件。它不处理 SVGZ 文件。它不处理目录。它不执行其他任何事情。只是单一任务*。
- svgcleaner 默认严格无损。默认未启用任何破坏性清理选项。
- 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属性将被处理并删除
- 路径和变换将被重新格式化
- currentColor和inherit属性值将被解析
- 引用的元素将被移动到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