Resolved using merge-images-v2
const mergeImages = require('merge-images-v2');
const Canvas = require('node-canvas');
const { Image } = require('node-canvas');
var images = [];
let totalWidthPixels, totalHeightPixels;
let imageDir = './images/'
Array.prototype.random = function () {
return this[Math.floor((Math.random()*this.length))];
}
function createImagesObject(gridHorizontalWidth,gridVerticalHeight,imageRes) {
totalWidthPixels = gridHorizontalWidth * imageRes;
totalHeightPixels = gridVerticalHeight * imageRes;
let totalPlots = gridHorizontalWidth * gridVerticalHeight;
for (let i = 0; i <= totalPlots; i++) {
let currentX = 0;
let currentY = 0;
let currentColumn = parseInt(i/gridVerticalHeight);
let currentColumnRemainder = i % gridVerticalHeight;
//console.log(currentColumn+ " ------ " + currentColumnRemainder);
currentX = currentColumn * imageRes;
currentY = currentColumnRemainder * imageRes;
images.push({ src: [imageDir+'default_gray.png',
imageDir+'bought_gray.png',
imageDir+'userImage.png'].random(),
x: currentX,
y: currentY })
}
}
createImagesObject(128,64,64);
mergeImages(images, {
Canvas: Canvas,
width: totalWidthPixels,
height: totalHeightPixels
})
.then(b64 => {
var base64Data = b64.replace(/^data:image\/png;base64,/, "");
require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
console.log(err);
});
});