All Projects β†’ RazrFalcon β†’ Svgcleaner

RazrFalcon / Svgcleaner

Licence: gpl-2.0
svgcleaner could help you to clean up your SVG files from the unnecessary data.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Svgcleaner

Scour
Scour - An SVG Optimizer / Cleaner
Stars: ✭ 443 (-65.84%)
Mutual labels:  cleaner, svg
Svg Autocrop
πŸš—πŸŒ½πŸ”³An NPM module to autocrop and slim down SVGs
Stars: ✭ 80 (-93.83%)
Mutual labels:  cleaner, svg
Twelvemonkeys
TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO
Stars: ✭ 1,221 (-5.86%)
Mutual labels:  svg
Vectorgraphics2d
Graphics2D implementations to export various vector file formats
Stars: ✭ 87 (-93.29%)
Mutual labels:  svg
Materialdesign
βœ’6200+ Material Design Icons from the Community
Stars: ✭ 9,669 (+645.49%)
Mutual labels:  svg
Pictogrify
🎭 Generate unique pictograms from any text
Stars: ✭ 80 (-93.83%)
Mutual labels:  svg
Dicom Ecg Plot
Dicom ECG Viewer and Converter. Convert to PDF, PNG, JPG, SVG, ...
Stars: ✭ 84 (-93.52%)
Mutual labels:  svg
Bulk Crap Uninstaller
Remove large amounts of unwanted applications quickly.
Stars: ✭ 1,212 (-6.55%)
Mutual labels:  cleaner
Official Bash Logo
Everything you need to start using the official GNU Bash logo
Stars: ✭ 89 (-93.14%)
Mutual labels:  svg
Svg.js
The lightweight library for manipulating and animating SVG
Stars: ✭ 9,315 (+618.2%)
Mutual labels:  svg
Touchdesigner Sop To Svg
A pipeline for handling the SOP to SVG pipeline. This is especially handy for using procedurally generated geometry for paths to be cut or plotted.
Stars: ✭ 87 (-93.29%)
Mutual labels:  svg
Pathrenderinglab
Repository for research on complete SVG rendering
Stars: ✭ 83 (-93.6%)
Mutual labels:  svg
Svg Native Viewer
SVG Native viewer is a library that parses and renders SVG Native documents
Stars: ✭ 85 (-93.45%)
Mutual labels:  svg
Dashed Border Generator
Custom Dashed Border | Online CSS Generator πŸš€
Stars: ✭ 79 (-93.91%)
Mutual labels:  svg
React Native Waveview
WaveView for React-Native
Stars: ✭ 88 (-93.22%)
Mutual labels:  svg
Waveforms
An interactive, explorable explanation about the peculiar magic of sound waves.
Stars: ✭ 1,218 (-6.09%)
Mutual labels:  svg
Asciitosvg
Create beautiful SVG renderings of ASCII diagrams.
Stars: ✭ 82 (-93.68%)
Mutual labels:  svg
Svgforxaml
Draw SVG image with Win2D
Stars: ✭ 84 (-93.52%)
Mutual labels:  svg
Osmic
CC0 SVG Map Icons, mirror of repo on Gitlab
Stars: ✭ 89 (-93.14%)
Mutual labels:  svg
Svg To Geojson
Upload SVG, return GeoJSON.
Stars: ✭ 88 (-93.22%)
Mutual labels:  svg

========================= 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 PC

Alternatives

  • svgo_
  • scour_

.. _svgo: https://github.com/svg/svgo .. _scour: https://github.com/scour-project/scour

In 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 <https://github.com/RazrFalcon/svgcleaner-gui>_.

Charts

See Testing notes <docs/testing_notes.rst>_ 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.zip

Documentation
-------------

Documentation can be found `here <docs/svgcleaner.adoc>`_.

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 number

Usage
-----

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 <docs/svgcleaner.adoc>`_ for more details.

GUI
```

You can get a GUI `here <https://github.com/RazrFalcon/svgcleaner-gui>`_.

Downloads
---------

You can get prebuilt packages `here <https://github.com/RazrFalcon/svgcleaner-gui/releases>`_.

Building
--------

Dependency: `Rust <https://www.rust-lang.org/>`_

::

  cargo build --release


If you're a Rust programmer, you can install *svgcleaner* using:

::

  cargo install svgcleaner

Contributing and Issues
-----------------------

See `CONTRIBUTING.md <CONTRIBUTING.md>`_ for details.

FAQ
---

See `FAQ.md <FAQ.md>`_ for details.

License
-------

*svgcleaner* is licensed under the `GPL-2.0 <https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html>`_.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].