#contour #boundary #tracing #algorithm #contour_tracing

app raster2svg

A tool that use the contour_tracing library

1 stable release

✓ Uses Rust 2018 edition

1.0.6 May 12, 2020
1.0.5 Apr 21, 2020
1.0.4 Apr 10, 2020
1.0.3 Mar 23, 2020
1.0.2 Mar 21, 2020

#42 in Encoding

Download history 110/week @ 2020-03-18 8/week @ 2020-03-25 4/week @ 2020-04-01 39/week @ 2020-04-08 18/week @ 2020-04-15 17/week @ 2020-04-22 3/week @ 2020-04-29 6/week @ 2020-05-06 27/week @ 2020-05-13 23/week @ 2020-05-20

66 downloads per month


107 lines

raster2svg crates.io

A tool that use the contour_tracing library Package


  • Support RGB colors + alpha channel (fully transparent colors are not traced)
  • Sort the colors from the most used to the less used
  • Input format: a raster image file
  • Output format: an SVG file

Features from the contour_tracing library: Package

  • Trace contours using the Theo Pavlidis' algorithm (connectivity: 4-connected)
  • Trace outlines in clockwise direction
  • Trace holes in counterclockwise direction


 -s, --size              Add the width, height and viewBox attributes
 -d, --ids               Add the RGB colors and opacity values as id attributes
 -k, --inkscape          Add some Inkscape attributes (transparent background, pixel units, grid, snapping, ...)
 -r, --rendering         Set the shape-rendering attribute at crispEdges
 -c, --closepaths        Close the paths with the SVG Path Z command

 -z, --zoom <PERCENT>    Multiply the width and height attributes by a given percent (e.g. 250)
 -i, --input <INPUT>     Input raster image filename (e.g. input.png)
 -o, --output <OUTPUT>   Output SVG filename (e.g. output.svg)

An example with some transparent colors

C:\>raster2svg.exe -s -d -k -r -i rust_input.png -o rust_output.svg
  • rust_input.png: rust_input.png

  • rust_output.svg: rust_output.svg

(click on it to view the source)

An example of a zoom by 800%

(Thanks Nayuki for your QR Code generator)

C:\>raster2svg.exe -s -z 800 -k -r -i qrcode_input.png -o qrcode_output.svg
  • qrcode_input.png: qrcode_input.png

  • qrcode_output.svg: qrcode_output.svg

(click on it to view the source)


  • Be careful with the size and complexity of your input image because the SVG file size grows rapidly...
  • An already compiled executable is available for Windows on GitHub: https://github.com/STPR/raster2svg/releases


raster2svg https://github.com/STPR/raster2svg

Copyright (c) 2020, STPR - https://github.com/STPR

SPDX-License-Identifier: EUPL-1.2


Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.txt.


~53K SLoC