html2canvas saving as a jpeg without opening in browser

后端 未结 1 503
南笙
南笙 2021-01-13 04:03

I am trying to create a screengrab button that creates an image of the user\'s document.body.

Ideally the user would then have an option to save the ima

1条回答
  •  囚心锁ツ
    2021-01-13 04:39

    a downloader function makes it much easier:

    function download(strData, strFileName, strMimeType) {
        var D = document,
            A = arguments,
            a = D.createElement("a"),
            d = A[0],
            n = A[1],
            t = A[2] || "text/plain";
    
        //build download link:
        a.href = "data:" + strMimeType + "," + escape(strData);
    
    
        if (window.MSBlobBuilder) {
            var bb = new MSBlobBuilder();
            bb.append(strData);
            return navigator.msSaveBlob(bb, strFileName);
        } /* end if(window.MSBlobBuilder) */
    
    
    
        if ('download' in a) {
            a.setAttribute("download", n);
            a.innerHTML = "downloading...";
            D.body.appendChild(a);
            setTimeout(function() {
                var e = D.createEvent("MouseEvents");
                e.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                a.dispatchEvent(e);
                D.body.removeChild(a);
            }, 66);
            return true;
        } /* end if('download' in a) */
        ; //end if a[download]?
    
        //do iframe dataURL download:
        var f = D.createElement("iframe");
        D.body.appendChild(f);
        f.src = "data:" + (A[2] ? A[2] : "application/octet-stream") + (window.btoa ? ";base64" : "") + "," + (window.btoa ? window.btoa : escape)(strData);
        setTimeout(function() {
            D.body.removeChild(f);
        }, 333);
        return true;
    } /* end download() */
    
    
    
    
    
    function screenGrabber() {
        html2canvas([document.body], {
        logging: true,
        useCORS: true,
        onrendered: function (canvas) {            
    
            img = canvas.toDataURL("image/jpeg");
    
           download(img, "modified.jpg", "image/jpeg");
        }
    });
    
    }
    

    0 讨论(0)
提交回复
热议问题