gospelo-svg2png
v0.1.0
Published
Convert SVG files to PNG using resvg-js (high-performance Rust-based renderer)
Maintainers
Readme
gospelo-svg2png
High-performance SVG to PNG converter using resvg-js (Rust-based renderer).
Features
- High-quality rendering - Rust-based resvg engine
- Fast conversion - Native performance
- No system dependencies - Pure JavaScript/WASM
- Convert single SVG file to PNG
- Batch convert multiple SVG files
- Convert from URL (CDN support)
- Customizable output size (width, height, DPI)
- Background color support
- System font support
Installation
cd ~/projects/gospelo-dev/svg2png
npm install
npm run buildOr install globally:
npm install -g .Usage
Command Line
# Single file conversion
gospelo-svg2png icon.svg
gospelo-svg2png icon.svg output.png
gospelo-svg2png icon.svg -o ./png
# With size options
gospelo-svg2png icon.svg --width 256 --height 256
gospelo-svg2png icon.svg -W 512
# Batch conversion (glob pattern)
gospelo-svg2png "icons/*.svg" -o ./png
gospelo-svg2png icon1.svg icon2.svg icon3.svg -o ./png
# From URL (CDN)
gospelo-svg2png --url https://cdn.jsdelivr.net/npm/heroicons/24/solid/check.svg check.png
gospelo-svg2png -u https://cdn.example.com/icon.svg output.png
# With background color
gospelo-svg2png icon.svg --background white
gospelo-svg2png icon.svg -b "#ffffff"
# Verbose output
gospelo-svg2png icon.svg -vNode.js API
import {
convertSvgToPng,
convertSvgFromUrl,
convertSvgBatch,
convertSvgContentToPng,
} from "gospelo-svg2png";
// Single file conversion
const result = convertSvgToPng("icon.svg", "output.png", {
width: 256,
height: 256,
verbose: true,
});
console.log(
`Generated: ${result.outputPath} (${result.width}x${result.height})`,
);
// Convert from URL (CDN)
const urlResult = await convertSvgFromUrl(
"https://cdn.jsdelivr.net/npm/heroicons/24/solid/check.svg",
"check.png",
{ width: 256 },
);
// Batch conversion
const results = await convertSvgBatch(
["icon1.svg", "icon2.svg", "icon3.svg"],
"./png",
{ width: 128 },
);
for (const result of results) {
if (result.success) {
console.log(`Converted: ${result.outputPath}`);
} else {
console.error(`Error: ${result.inputPath}: ${result.error}`);
}
}
// Convert SVG content directly
const svgContent = "<svg>...</svg>";
const pngBuffer = convertSvgContentToPng(svgContent, { width: 256 });Options
| Option | CLI Flag | Description |
| ------------ | ------------------ | ------------------------------------------- |
| width | -W, --width | Output width in pixels |
| height | -H, --height | Output height in pixels |
| background | -b, --background | Background color (e.g., 'white', '#ffffff') |
| dpi | --dpi | DPI for rendering (default: 96) |
| verbose | -v, --verbose | Verbose output |
Environment Variables
SVG2PNG_OUTPUT_DIR: Default output directory
Comparison with other libraries
| Feature | gospelo-svg2png (resvg) | CairoSVG | svglib | | ------------ | ----------------------- | ------------- | --------- | | Speed | 🚀 Fast (Rust/WASM) | 🚀 Fast (C) | 🐢 Slow | | Dependencies | None (WASM) | Cairo library | ReportLab | | SVG Support | High | Medium | Low | | Gradients | ✅ | ✅ | ❌ | | Filters | Partial | Limited | ❌ | | Animations | ❌ | ❌ | ❌ |
License
MIT License - Copyright (c) 2025 NoStudio LLC
