Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/RazrFalcon/svgcleaner
svgcleaner could help you to clean up your SVG files from the unnecessary data.
https://github.com/RazrFalcon/svgcleaner
cleaner rust svg
Last synced: 7 days ago
JSON representation
svgcleaner could help you to clean up your SVG files from the unnecessary data.
- Host: GitHub
- URL: https://github.com/RazrFalcon/svgcleaner
- Owner: RazrFalcon
- License: gpl-2.0
- Archived: true
- Created: 2012-01-05T11:03:27.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2021-10-30T13:53:34.000Z (about 3 years ago)
- Last Synced: 2024-08-12T00:33:54.868Z (3 months ago)
- Topics: cleaner, rust, svg
- Language: Rust
- Homepage:
- Size: 3.9 MB
- Stars: 1,618
- Watchers: 35
- Forks: 94
- Open Issues: 104
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-rust-cn - RazrFalcon/svgcleaner
- awesome-rust - RazrFalcon/svgcleaner
- awesome-svg - cli - gui) - compresses the most, and much faster than the others (Compression)
- awesome-js-tooling-in-rust - svgcleaner
- awesome-rust-zh - RazrFalcon/svgcleaner - 整理 SVG 图形 (应用 / 图像)
- awesome-rust - RazrFalcon/svgcleaner
README
=========================
svgcleaner |build status|
=========================.. |build status| image:: https://travis-ci.org/RazrFalcon/svgcleaner.svg?branch=master
:target: https://travis-ci.org/RazrFalcon/svgcleaner*svgcleaner* helps you clean up your SVG files, keeping them free from unnecessary data.
|
.. contents:: **Table of Contents**
Purpose
-------The main purpose of *svgcleaner* is to losslessly reduce the size of an SVG image, created in a
vector editing application, before publishing.Usually more than half of an SVG image's data is useless for rendering. For example:
- Temporary data used by the vector editing application
- Non-optimal SVG structure representation
- Unused and invisible graphical elements... Are all unnecessary in a published SVG.
Goals
-----#. **Correctness** - *svgcleaner* should not break an SVG file
#. **Cleaning ratio** - Higher is better
#. **Performance** - An average SVG file processing time should be closer to ~1ms on a modern PCAlternatives
------------- svgo_
- scour_.. _svgo: https://github.com/svg/svgo
.. _scour: https://github.com/scour-project/scourIn addition to the main advantages of *svgcleaner* — like correctness, cleaning ratio and performance,
which are described below — there are some more nuances to be aware of:#. *svgcleaner* cleans only one SVG file. It doesn't process SVGZ files.
It doesn't process directories. It doesn't do anything else. Just one task*.
#. *svgcleaner* is strictly lossless by default. There are no destructive cleaning options enabled by default.
#. *svgcleaner* is portable. You can build it into a single executable without any external dependencies.\* You can get all of these features using the `GUI `_.
Charts
------See `Testing notes `_ for details.
All stats were collected using the latest release version.
Correctness
```````````*Less is better.*
.. image:: docs/images/correctness_chart_W3C_SVG_11_TestSuite.svg
.. image:: docs/images/correctness_chart_oxygen.svg
Cleaning ratio
``````````````*More is better.*
.. image:: docs/images/ratio_chart_W3C_SVG_11_TestSuite.svg
\* scour_ creates bigger files (-18.78%).
.. image:: docs/images/ratio_chart_oxygen.svg
Cleaning time
`````````````*Less is better.*
.. image:: docs/images/performance_chart_W3C_SVG_11_TestSuite.svg
.. image:: docs/images/performance_chart_oxygen.svg
Other
`````========================= ================= ================ =========
Collection Size Before (MiB) Size After (MiB) Ratio (%)
========================= ================= ================ =========
`Breeze icons theme`_ 21.72 11.09 48.91
`Ardis icons theme`_ 11.82 5.23 55.74
`Humanity icons theme`_ 8.56 3.08 64.01
`Open Icon Library`_ 207.45 69.44 66.53
`Elementary icons theme`_ 17.72 7.09 59.95
`Adwaita icons theme`_ 2.21 0.37 83.08
`Faience icon theme`_ 22.35 11.14 50.16
`GCP Icons`_ 0.344 0.082 75.9
========================= ================= ================ =========.. _`Breeze icons theme`: https://github.com/KDE/breeze-icons
.. _`Ardis icons theme`: https://github.com/Nitrux/ardis-icon-theme
.. _`Humanity icons theme`: https://wiki.ubuntu.com/Artwork/Incoming/Karmic/Humanity_Icons?action=AttachFile&do=view&target=humanity_2.1.tar.gz
.. _`Open Icon Library`: https://sourceforge.net/projects/openiconlibrary
.. _`Elementary icons theme`: https://github.com/elementary/icons
.. _`Adwaita icons theme`: https://github.com/GNOME/adwaita-icon-theme
.. _`Faience icon theme`: https://github.com/csharris/faience-icon-theme
.. _`GCP Icons`: https://cloud.google.com/icons/files/google-cloud-icons.zipDocumentation
-------------Documentation can be found `here `_.
Limitations
-----------*svgcleaner* shouldn't change your file unless you tell it to, but there are still
things that can't be preserved. So even if you disable all cleaning options there are still things
that will be changed, such as:- Original indent is not preserved
- All colors will be formatted as #RRGGBB and #RGB
- DOCTYPE, CDATA will be processed and removed
- CSS support is minimal
- CSS from the ``style`` element will be extracted and processes. The ``style`` element will be removed.
- The ``style`` attribute will be split into attributes
- The ``class`` attribute will be processed and removed
- Paths and transformations will be reformatted
- ``currentColor`` and ``inherit`` attributes values will be resolved
- Referenced elements will be moved to the ``defs`` element
- IRI and FuncIRI attributes that reference non-existing objects will be removed
- If the ``offset`` attribute value of the ``stop`` element is represented as percentage - it will be
converted into a decimal numberUsage
-----CLI
```::
svgcleaner in.svg out.svg
Change default options:
::
svgcleaner --indent=2 --paths-coordinates-precision=5 --join-arcto-flags=yes in.svg out.svg
Use ``--help`` for a list of the cleaning options and see the
`documentation `_ for more details.GUI
```You can get a GUI `here `_.
Downloads
---------You can get prebuilt packages `here `_.
Building
--------Dependency: `Rust `_
::
cargo build --release
If you're a Rust programmer, you can install *svgcleaner* using:
::
cargo install svgcleaner
Contributing and Issues
-----------------------See `CONTRIBUTING.md `_ for details.
FAQ
---See `FAQ.md `_ for details.
License
-------*svgcleaner* is licensed under the `GPL-2.0 `_.