Node.js Quick Start
Install
Section titled “Install”npm install edgesvg# oryarn add edgesvg# orpnpm add edgesvgNode.js 18+. Pre-built native addons for macOS (arm64, x64), Linux (x64, arm64), and Windows (x64).
Basic Usage
Section titled “Basic Usage”Vectorize an image
Section titled “Vectorize an image”import { vectorize } from 'edgesvg';
// Auto mode — EdgeSVG picks the best strategyconst result = vectorize('logo.png', { method: 'auto' });
console.log('SVG length:', result.svg.length);console.log('Method used:', result.effectiveMethod);console.log('Decision:', result.decision);Inspect quality metrics
Section titled “Inspect quality metrics”const { metrics } = result.report;console.log('SSIM: ', metrics.ssim.toFixed(4));console.log('Edge F1: ', metrics.edgeF1.toFixed(4));console.log('Foreground: ', metrics.foregroundIou.toFixed(4));console.log('Path count: ', metrics.pathCount);console.log('File size: ', metrics.fileSize, 'bytes');Analyze before converting
Section titled “Analyze before converting”import { analyze, inspect } from 'edgesvg';
// Get recommendationconst info = inspect('logo.png');console.log('Recommendation:', info.recommendation);
// Raw image featuresconst analysis = analyze('logo.png');console.log('Image kind:', analysis.analysis.kind);console.log('Decision: ', analysis.decision);Compare SVG quality
Section titled “Compare SVG quality”import { compare } from 'edgesvg';
const metrics = compare('logo.png', result.svg);console.log('SSIM: ', metrics.ssim.toFixed(4));console.log('Fidelity: ', metrics.fidelityScore.toFixed(4));Vectorization Modes
Section titled “Vectorization Modes”| Method | When to use |
|---|---|
'auto' | Delegate choice to EdgeSVG (recommended) |
'logo' | Logos, icons, geometric shapes |
'premium' | Higher-fidelity richer images |
'smart' | Iterative search to hit quality targets |
const logo = vectorize('icon.png', { method: 'logo' });const premium = vectorize('illustration.png', { method: 'premium' });const smart = vectorize('complex.png', { method: 'smart' });Full API
Section titled “Full API”import { vectorize, analyze, inspect, compare, optimizeSvg, renderPng, benchmark, version,} from 'edgesvg';
// Vectorizeconst result = vectorize('input.png', { method: 'auto' });
// Inspect / analyzeconst info = inspect('input.png');const analysis = analyze('input.png');
// Compare SVG with rasterconst metrics = compare('input.png', svgString);
// Optimize SVG (coordinate rounding, noise removal)const optimized = optimizeSvg(svgString, { precision: 2 });
// Render SVG to PNGconst pngBuffer = renderPng(svgString, 512, 512);
// Batch benchmarkconst report = benchmark({ inputDirs: ['images/'], outputDir: 'results/' });
// Versionconsole.log(version());Save and Load
Section titled “Save and Load”import { vectorize, renderPng } from 'edgesvg';import { writeFileSync } from 'fs';
const result = vectorize('logo.png', { method: 'auto' });
// Save SVGwriteFileSync('logo.svg', result.svg, 'utf-8');
// Render and save PNG previewconst png = renderPng(result.svg, 512, 512);writeFileSync('preview.png', Buffer.from(png));TypeScript Support
Section titled “TypeScript Support”The package includes TypeScript type declarations. All API functions are fully typed.
import type { VectorizeResult, QualityMetrics, AnalyzeResult } from 'edgesvg';CLI via npx
Section titled “CLI via npx”npx edgesvg convert logo.png logo.svg --method auto --jsonBuild from source
Section titled “Build from source”git clone https://github.com/raphaelmansuy/edgesvg.gitcd edgesvg/sdks/nodenpm cinpm run buildRequires Rust 1.82+ and Node.js 18+.