I'm trying to write a function that merges 2 images and then returns the Data URL of the merged image. On image2.onload
I am setting mergedUrl
to c.toDataUrl()
and trying to return mergedUrl in the main function; however, since return mergedUrl
is getting called before image2.onload
, it is always empty.
async function mergeImages(source1, source2, currentPageNumber){
let image1 = new Image();
image1.src = source1;
var c = document.createElement('canvas');
var ctx = c.getContext("2d");
let mergedUrl = ''
image1.onload = async function (){
c.width = image1.width;
if(currentPageNumber > 1){
c.height = image1.height + (image1.height/(currentPageNumber));
} else {
c.height = image1.height;
}
ctx.drawImage(image1, 0, 0);
let image2 = new Image();
image2.src = source2;
image2.onload = async function (){
ctx.drawImage(image2, 0, image1.height);
mergedUrl = c.toDataUrl();
};
};
await return mergedUrl;
}