How can I reduce the size of a SVG using software on Ubuntu?
Solution 1:
I can't think of something better than inkscape.
Inkscape is an open-source vector graphics editor similar to Adobe Illustrator, Corel Draw, Freehand, or Xara X. What sets Inkscape apart is its use of Scalable Vector Graphics (SVG), an open XML-based W3C standard, as the native format.
You can install it usind command:
sudo apt-get install inkscape
Take a look for this link for tips to optimize SVG using inkscape.
for comamnd line I think you should take a look for scour
scour --help
scour 0.26
Copyright Jeff Schiller, Louis Simard, 2010
Usage: scour [-i input.svg] [-o output.svg] [OPTIONS]
If the input/output files are specified with a svgz extension, then compressed
SVG is assumed. If the input file is not specified, stdin is used. If the
output file is not specified, stdout is used.
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--disable-simplify-colors won't convert all colors to #RRGGBB format
--disable-style-to-xml won't convert styles into XML attributes
--disable-group-collapsing won't collapse <g> elements
--create-groups create <g> elements for runs of elements with
identical attributes
--enable-id-stripping remove all un-referenced ID attributes
--enable-comment-stripping remove all <!-- --> comments
--shorten-ids shorten all ID attributes to the least number of
letters possible
--disable-embed-rasters won't embed rasters as base64-encoded data
--keep-editor-data won't remove Inkscape, Sodipodi or Adobe
Illustrator elements and attributes
--remove-metadata remove <metadata> elements (which may contain
license metadata etc.)
--renderer-workaround work around various renderer bugs (currently
only librsvg) (default)
--no-renderer-workaround do not work around various renderer bugs
(currently only librsvg)
--strip-xml-prolog won't output the <?xml ?> prolog
--enable-viewboxing changes document width/height to 100%/100% and
creates viewbox coordinates
-p DIGITS, --set-precision=DIGITS
set number of significant digits (default: 5)
-q, --quiet suppress non-error output
--indent=INDENT_TYPE indentation of the output: none, space, tab
(default: space)
--protect-ids-noninkscape Don't change IDs not ending with a digit
--protect-ids-list=PROTECT_IDS_LIST
Don't change IDs given in a comma-separated list
--protect-ids-prefix=PROTECT_IDS_PREFIX
Don't change IDs starting with the given prefix
Also take a look for this SE question , it may help.
Solution 2:
Use svgo https://spin.atomicobject.com/2016/11/10/svgo-compressing-svg-images/
Works quickly and provides a summary of results
You can use it using the same file for input & output, or not.
# svgo file.svg -o file.svg
file.svg:
Done in 268 ms!
67.819 KiB - 1.7% = 66.669 KiB
Don't be fooled by that small reduction. It is the second pass over already compressed files. On the first round the average saving was 65% (images created with gnuplot).
I just discovered it today and I'm very satisfied.