Create a Data URI String with Node.js
Turning an image into a data URI string with Node.js involves a few steps but can be solved pretty easily.
To learn how let's create a utility function that will read a file with fs, then convert its content to Base64, and prepend the appropriate MIME type to format it as a Data URI:
const fs = require('fs');
const path = require('path');
// Function to convert image to Data URI
const imageToDataURI = (filePath) => {
// Determine the MIME type from the file extension
const mimeType = 'image/' + path.extname(filePath).slice(1);
// Read the file synchronously
const imageData = fs.readFileSync(filePath);
// Convert the image data to a Base64-encoded string
const base64Image = Buffer.from(imageData).toString('base64');
// Format the Data URI string
const dataUri = `data:${mimeType};base64,${base64Image}`;
return dataUri;
};
// Example usage
const filePath = 'path/to/your/image.png'; // Update this path to your image file
const dataUri = imageToDataURI(filePath);
console.log(dataUri);
So wtf is happening?
Determine MIME Type: The MIME type is inferred from the file extension using the
path.extnamemethod. This approach eliminates the need for manual extension checks, streamlining the process.Read File Synchronously: The
fs.readFileSyncmethod reads the file's contents. I think using asynchronous methods (fs.readFile) in production might be a better option to prevent blocking.Convert to Base64: The
Buffer.from()method creates a buffer from the image data, which is then converted to a Base64 string usingtoString('base64').Format Data URI: Finally, the Base64-encoded image data is concatenated with the MIME type to form the Data URI string.
