How to download a base64-encoded image?

前端 未结 10 909
无人及你
无人及你 2020-11-29 08:16

I have a base64-encoded image from the server for which I want to force the download through JavaScript. Is is possible?

10条回答
  •  清酒与你
    2020-11-29 08:49

    I found this solution from the sourcecode of how Chrome takes full-page screenshots.

    const base64string = "";
    const pageImage = new Image();
    pageImage.src = 'data:image/png;base64,' + base64string;
    pageImage.onload = function() {
        const canvas = document.createElement('canvas');
        canvas.width = pageImage.naturalWidth;
        canvas.height= pageImage.naturalHeight;
    
        const ctx = canvas.getContext('2d');
        ctx.imageSmoothingEnabled = false;
        ctx.drawImage(pageImage, 0, 0);
        console.log(canvas, pageImage)
        saveScreenshot(canvas);
    }
    function saveScreenshot(canvas) {
        let fileName = "image"
        const link = document.createElement('a');
        link.download = fileName + '.png';
        console.log(canvas)
        canvas.toBlob(function(blob) {
            console.log(blob)
            link.href = URL.createObjectURL(blob);
            link.click();
        });
    };
    
    

提交回复
热议问题