Skip to main content

Crate img2svg

Crate img2svg 

Source
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§

BatchConvertEntry
Result of converting one file in a batch run.
BatchConvertSummary
Summary of a batch directory conversion.
ConversionOptions
Options for image to SVG conversion

Functions§

batch_convert_enhanced
Convert all supported images in input_dir to vector files in output_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>