JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://rawgit.com/tsayen/dom-to-image/master/src/dom-to-image.js"></script>
<button id='mydownload'>Download DomToImage</button>
<div id="wrapper">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADoklEQVRIic1UW2hcRRj+/plzzu7Za3ax1DS1uVgkRJ+8IGgx5s2XIoiJRVt9MRahIoLRQGEzKK1KkYJ4YVsIxtRCslQ0pWJ90CzksepTrdo2jVITrTZpsntyzp49Z34f0tjcmosP6g/DzMPMd/tnBvi/FwP0nwrYMDsDggBdzjU9ZVjiiWB2pjNx8MrvDBABvHS/+AeKNAOkBe6JxI2d2kgcZdUQvS52meCNEtCfL22tI4C/wegrpUn/k2TS3FnSIkeAZrWcYF0Rzdsv9TS9Z0jxmBuEz2Vfu3Rydv/WOrYiX9qGaLnmBHuyBy8dWxrVuhwQwMwgEvjJEEglTDlUyjX1xA5c/lUH1Y6QMZlMyHemu2+7jwDmBbgbbvLUq40P2THxQSRutLhO9cQ19p6OB9GHU3F5yqnoH6sIH8mosbF5J2sScDuk07K9KwjDCzJ0i8k3fvvj5+fTmU2bNx2xE/LxihP+UPIre2xh7ohnrcPOtP9xQo3uXndE7h1btoBZpbNWQUTip2d6mrpv2ZyyY+pCe2nGf1kINNfY0a+FIGt6yn/LAH+0JN41HLyAiFPT2CxN2qU1vRiLSdtz9dWQ9adxw3396qy9PREVH4Zaj8fV6P1Lz69KwO2Qw3eC2hQCAFCA6Mo1dLKQ++KWuAtE8ANd8LzwpInqV/aBy+NQIFLQqxAwncnvNe7de6Tq5urbNJndmvRFaDoHjbNhUP2u5s1fpkq5+jaQ8WTMpGfdIOxKqNG3B9s7REehEK7bQUndvksAx2IRIcGAU9GawTMEGmdgRBKd83XgpsVYHyl4K2EsbDIBQL5vcNvxwaEdAJA4e7EwOV1Jlhyn2fHC3YB+F8D3IGSI8IydkocNogdIwTvx2ecP5vsGt91UeD6fNwGgt3/g0NAXw6yUWvWGXVENt07tb3jUUfV3M0CnTg9zb//AoYVYAGDMLyYmJhgAGCj7s+WqUkq7ucbOaMra55SDAIAFgBhEBPgELscyRuCVvaMEfFtwylUGyguxFkVUW1tLAMDMAmBTKWUEQpoMYTBJyZCCIQkQYBKREKJGQ9QFIpJVShkENufO3sBa0QERsR9yqJQKFPA+5sYapXC8MBQSES918DfBPCsRrFQ6LXv7B86AOSJIC2Ysb9v1z0az0CCqpNJp6VVc66YOMpnM3OMI+HzFc0cA2ExChxB6xctMN2YCo+K5Iwj4/CKsf6OWaVNKCbS2ChSLG0NqbQWKRa2UWqT+L8H8novr0M9+AAAAAElFTkSuQmCC"/>
<div> DUDE IS WORKING</div>
<img...
CSS
#wrapper{
background: red;
color: blue;
}
JavaScript
document.getElementById('mydownload').onclick= function(){
var wrapper = document.getElementById('wrapper');
//dom to image
domtoimage.toSvg(wrapper).then(function (svgDataUrl) {
//download function
downloadPNGFromAnyImageSrc(svgDataUrl);
});
}
function downloadPNGFromAnyImageSrc(src)
{
//recreate the image with src recieved
var img = new Image;
//when image loaded (to know width and height)
img.onload = function(){
//drow image inside a canvas
var canvas = convertImageToCanvas(img);
//get image/png from convas
var pngImage = convertCanvasToImage(canvas);
//download
var anchor = document.createElement('A');
anchor.setAttribute('href', pngImage.src);
anchor.setAttribute('download', 'image.png');
anchor.click();
};
img.src = src;
// Converts image to canvas; returns new canvas element
function convertImageToCanvas(image) {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext("2d").drawImage(image, 0, 0);
return canvas;
}
// Converts canvas to an image
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/png");
return image;
}
}