by Timur Dautov

How to Generate Images from SVG

In this article, we will learn how to generate images with different sizes from SVG.

Basically we will use sharp npm library: https://github.com/lovell/sharp

Generate Images with Different Sizes from SVG#

Step 1: Install Sharp#

npm install sharp

Step 2: Create a Script to Generate Images#

import sharp from "sharp";
import fs from "fs";
import path from 'path';

const inputSvg = "public/icons/notes.svg"; // Path to your SVG file
const outputSizes = {
  "16": "public/icons/icon16.png",
  "32": "public/icons/icon32.png",
  "48": "public/icons/icon48.png",
  "128": "public/icons/icon128.png",
};

// Ensure the output directory exists
fs.mkdirSync("public/icons", { recursive: true });

async function convertIcons() {
  for (const [size, outputPath] of Object.entries(outputSizes)) {
    await sharp(inputSvg)
      .resize(parseInt(size), parseInt(size)) // Resize to the given size
      .png()
      .toFile(outputPath);
    console.log(`Generated: ${outputPath}`);
  }
}

convertIcons().catch(console.error);

Step 3: Run the Script#

node generate-images.js

Step 4: Check the Output#

ls -l public/icons