6 releases
0.1.5 | Mar 5, 2020 |
---|---|
0.1.4 | Mar 2, 2020 |
0.1.1 | Feb 29, 2020 |
#56 in #points
17KB
316 lines
svg2pts
Command line utility to convert the paths in a SVG to a list of points. All paths in the SVG are converted into a list of points with
curve interpolation is controlled by command line arguments.
Paths with no stroke nor fill are ignored. Output is a sequence of points, X Y\n
Installation
Using snaps:
snap install svg2pts
Using cargo:
cargo install svg2pts
OR with enabled text feature, requires harfbuzz,
cargo install svg2pts --features=text
This will make the svg2pts binary available in your cargo binary directory; usually ~/.cargo/bin
.
Usage
svg2pts 0.1.5
Converts all paths in a svg to a list of points. Paths
with no stroke nor fill are ignored. Output is a sequence of points, `X Y\n`.
USAGE:
svg2pts [OPTIONS] [ <input> [<output>] ]
FLAGS:
-h, --help Prints help information
OPTIONS:
-a, --accuracy <accuracy> Set tolerance threshold for bezier curve approximation,
lower -> higher quality [default: min(<distance>/25.0,0.05)]
-d, --distance <distance> Set target distance between points, depends on DPI of SVG.
If distance == 0.0 point distance not normalized.
[default: 0.0]
ARGS:
<input> Input SVG file, stdin if not present
<output> Output file, stdout if not present"#
Changelog
- v0.1.5
- Fix: Commandline argument, output file bug.
- Change: Lower tolerance threshold for improved default accuracy and scale thread threshold for small disances.
- v0.1.4
- Make text support an optional feature, making the harfbuzz dependency optional.
- v0.1.3
- Improved distance normalization: The points generated more accurately follow the paths in the SVG at a variety of distance parameters.
- Hidden path removal: Paths which have no stroke nor fill value are ignored when generating points.
- v0.1.2
- Transformations now applied: Previously path transformations where ignored.
Examples
$ svg2pts -d 3.5 media/rust.svg
71.05 120.32
67.5572042727889 120.0955495422685
64.09895790373652 119.5565392910338
60.64071153468416 119.0175290397991
57.283778022261004 118.02707591462337
...
$ svg2pts -d 3.5 media/rust.svg | gnuplot -p -e 'plot "<cat"'
#graphs below
SVG converted to points with distance 1.5
SVG converted to points with distance 3.5
SVG converted to points without normalized distance
SVG converted without normalized distance and lower accuracy (simplified)
SVG converted to points then displayed on an oscilloscope
svg2pts -d 3.5 rust.svg | pts2wav > logo.wav
You can get pts2wav
here https://github.com/exrok/pts2wav
Dependencies
~4MB
~91K SLoC