Expand description
img2svg - A high-quality image to SVG converter library
This library provides functionality to convert raster images (PNG, JPEG, etc.) into scalable vector graphics (SVG) format.
§Features
- Color quantization using median-cut algorithm
- Marching squares contour tracing for accurate shape detection
- Ramer-Douglas-Peucker simplification for clean paths
- Gaussian smoothing for natural curves
§Example
use img2svg::{convert, ConversionOptions};
use std::path::Path;
let options = ConversionOptions {
num_colors: 16,
smooth_level: 5,
..Default::default()
};
convert(Path::new("input.png"), Path::new("output.svg"), &options)
.expect("Conversion failed");Re-exports§
pub use enhanced_vectorizer::generate_enhanced_svg;pub use enhanced_vectorizer::generate_enhanced_svg_to;pub use enhanced_vectorizer::vectorize_enhanced;pub use enhanced_vectorizer::write_enhanced_svg;pub use enhanced_vectorizer::EnhancedOptions;pub use enhanced_vectorizer::EnhancedPath;pub use enhanced_vectorizer::EnhancedVectorData;pub use gradient_detector::detect_gradient;pub use gradient_detector::detect_linear_gradient;pub use gradient_detector::detect_radial_gradient;pub use gradient_detector::DetectedGradient;pub use gradient_detector::LinearGradient;pub use gradient_detector::RadialGradient;pub use image_filters::mean_shift_filter;pub use image_filters::median_filter;pub use image_filters::prewitt_edge_detection;pub use image_filters::quantize_from_labels;pub use image_filters::roberts_edge_detection;pub use image_filters::slic_superpixels;pub use image_filters::watershed_segment;pub use image_filters::weighted_median_filter;pub use image_filters::AdaptiveThreshold;pub use image_filters::AdaptiveToneMapper;pub use image_filters::CannyEdgeDetector;pub use image_filters::ColorOps;pub use image_filters::ColorTemperature;pub use image_filters::EmbossFilter;pub use image_filters::GammaCorrection;pub use image_filters::HighBoostFilter;pub use image_filters::HistogramEqualizer;pub use image_filters::LaplacianSharpen;pub use image_filters::MorphologyKind;pub use image_filters::MorphologyOp;pub use image_filters::NonLocalMeans;pub use image_filters::OtsuThreshold;pub use image_filters::PeronaMalik;pub use image_filters::Saturation;pub use image_filters::SepiaFilter;pub use image_filters::SmartThreshold;pub use image_filters::UnsharpMask;pub use image_filters::VignetteFilter;pub use image_filters::VintageFilter;pub use image_filters::CLAHE;pub use image_filters::HSL;pub use image_filters::LAB;pub use eps_generator::write_enhanced_ai;pub use eps_generator::write_enhanced_eps;pub use eps_generator::write_enhanced_output;pub use eps_generator::write_enhanced_pdf;pub use eps_generator::write_vectorized_eps;pub use eps_generator::EnhancedOutputFormat;pub use extra_backends::write_enhanced_dxf;pub use extra_backends::write_enhanced_geojson;pub use extra_backends::write_enhanced_gimppath;pub use image_processor::cmyk_to_rgb;pub use image_processor::detect_color_space;pub use image_processor::image_data_from_cmyk;pub use image_processor::load_animated_gif;pub use image_processor::load_image;pub use image_processor::quantize_colors;pub use image_processor::ColorSpace;pub use image_processor::GifFrame;pub use image_processor::ImageData;pub use despeckle::despeckle;pub use svg_generator::generate_svg;pub use svg_generator::generate_svg_advanced;pub use svg_generator::generate_svg_to;pub use svg_generator::write_multi_path_to;pub use svg_generator::write_subpath_to;pub use vectorizer::vectorize;pub use vectorizer::Curve;pub use vectorizer::Point;pub use vectorizer::VectorizedData;
Modules§
- bezier_
fitter - Cubic Bézier curve fitting with Newton-Raphson reparameterization. Least-squares cubic Bézier fitting with Newton-Raphson reparameterization.
- centerline_
tracer - Centerline tracing for line art mode. Centerline tracing via morphological skeletonization (line art mode).
- despeckle
- Potrace-style despeckle: remove small color islands before contour extraction. Potrace-style despeckle: remove small connected color islands from quantized images.
- edge_
detector - Sobel edge detection for gradient-based edge maps. Sobel edge detection for edge-aware quantization.
- enhanced_
quantizer - K-means++ initialization and edge-aware color quantization. Enhanced color quantization with k-means++ initialization, k-means refinement, perceptual color distance, and edge-aware majority-vote smoothing.
- enhanced_
vectorizer - Enhanced vectorization pipeline: marching squares → Bézier curves. Enhanced vectorization pipeline ported from the vec project.
- eps_
generator - EPS/PDF/AI vector export. EPS and minimal PDF export from vector data.
- extra_
backends - DXF/GeoJSON/Gimppath vector export. Additional vector export backends: DXF, GeoJSON, and GIMP path.
- gradient_
detector - Linear and radial gradient detection for smoother SVG gradient fills. Gradient detection for smoother SVG gradient rendering.
- image_
filters - Comprehensive image processing filters (noise reduction, edge enhancement, contrast adjustment, thresholding, morphology, color operations, effects). Advanced image processing filters and algorithms
- image_
processor - Image loading, auto-resize, and median-cut color quantization.
- logo_
pipeline - Logo fill + outline separation. Logo pipeline: separate fill regions from outline strokes.
- path_
simplifier - Visvalingam-Whyatt simplification with corner preservation. Visvalingam-Whyatt path simplification with corner preservation.
- preprocessor
- LUT bilateral filter and color reduction for photo preprocessing. Image preprocessing for better vectorization results
- region_
extractor - Background color detection via border-pixel frequency. Flood-fill region extraction with 8-connectivity and Moore neighborhood contour tracing. Replaces marching-squares for exact region margins.
- svg_
generator - SVG generation with compact output and alpha channel support.
- tune
- HTML parameter tuning grid generator. Interactive parameter tuning: generate HTML comparison grid.
- vectorizer
- Original pipeline: marching squares, Gaussian smoothing, RDP simplification.
Structs§
- Batch
Convert Entry - Result of converting one file in a batch run.
- Batch
Convert Summary - Summary of a batch directory conversion.
- Conversion
Options - Options for image to SVG conversion
Functions§
- batch_
convert_ enhanced - Convert all supported images in
input_dirto vector files inoutput_dir. - convert
- Convert an image file to SVG
- convert_
animated_ gif - Convert an animated GIF to a vector of per-frame SVG strings.
- convert_
enhanced - Convert an image file with the enhanced Bézier pipeline (CLI default).
- convert_
enhanced_ data - Convert in-memory image data with the enhanced Bézier pipeline.
- convert_
enhanced_ to_ svg_ string - Convert in-memory image data to an enhanced SVG string.
- convert_
to_ svg_ string - Convert image data directly to SVG string
- is_
supported_ image - Check whether a file path has a supported raster image extension.
Type Aliases§
- Result
- Re-export anyhow Result for convenience.
Result<T, Error>