zoukankan      html  css  js  c++  java
  • html2canvas页面滚动内容截图并下载

    <!--div转成图片并下载-->
        <script src="./js/html2canvas.min.js"></script>
        <script>
            // edited from https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#Polyfill
            var dataURIToBlob =  function (imgName, dataURI, callback) {
                var binStr = atob(dataURI.split(',')[1]),
                                len = binStr.length,
                                arr = new Uint8Array(len);
    
                for (var i = 0; i < len; i++) {
                    arr[i] = binStr.charCodeAt(i);
                }
    
                callback(imgName, new Blob([arr]));
            }
    
            var callback = function (imgName, blob) {
                var triggerDownload = $("<a>").attr("href", URL.createObjectURL(blob)).attr("download", imgName).appendTo("body").on("click", function () {
                    if (navigator.msSaveBlob) {
                        return navigator.msSaveBlob(blob, imgName);
                    }
                });
                triggerDownload[0].click();
                triggerDownload.remove();
            };
    
            function createImg() {
                var getPixelRatio = function (context) { // 获取设备的PixelRatio
                    var backingStore = context.backingStorePixelRatio ||
                                    context.webkitBackingStorePixelRatio ||
                                    context.mozBackingStorePixelRatio ||
                                    context.msBackingStorePixelRatio ||
                                    context.oBackingStorePixelRatio ||
                                    context.backingStorePixelRatio || 0.5;
                    return (window.devicePixelRatio || 0.5) / backingStore;
                };
                //生成的图片名称
                var imgName = "cs.png";
                var shareContent = document.getElementsByTagName("body")[0];
                let scale = 3;
                var opts = {
                    //scale: scale,
                    /*canvas: canvas,
                     width,
                    height: height,*/
                    dpi: window.devicePixelRatio,
                    useCORS: true, // 【重要】开启跨域配置
                    // window.screen.availWidth,  //显示的canvas窗口的宽度
                    //height: window.screen.availHeight, //显示的canvas窗口的高度
                     window.document.body.offsetWidth,   //获取当前网页的宽度
                    height: window.document.body.offsetHeight, //获取当前网页的高度
                    windowWidth: document.body.scrollWidth,     //获取X方向滚动条内容
                    windowHeight: document.body.scrollHeight, //获取Y方向滚动条内容
                    x: 0,                                                                            //页面在水平方向没有滚动,故设置为0
                    y: window.pageYOffset                                            //页面在垂直方向的滚动距离
                };
                html2canvas(shareContent, opts).then(function (canvas) {
                    const context = canvas.getContext("2d");
    
                    // 【重要】关闭抗锯齿 https://segmentfault.com/a/1190000011478657
                    context.imageSmoothingEnabled = false;
                    context.webkitImageSmoothingEnabled = false;
                    context.msImageSmoothingEnabled = false;
                    context.imageSmoothingEnabled = false;
                    let imgUrl = canvas.toDataURL("image/png").replace("image/png","image/octet-stream");
                    //console.log("imgUrl",imgUrl);
                    dataURIToBlob(imgName, imgUrl, callback);
                });
            }
    
        </script>
  • 相关阅读:
    通过anaconda进行python多版本控制
    搭建java环境
    windows安装 Microsoft Visual c++
    更改jupyter notebook的主题颜色(theme) 包括pycharm
    linux服务器安装anaconda,然后远程使用jupyter
    根据经纬度坐标计算距离-python
    Redis相关链接
    VBA笔记-参考教程
    用sklearn计算卡方检验P值
    linux创建新用户
  • 原文地址:https://www.cnblogs.com/siyecao2010/p/11642008.html
Copyright © 2011-2022 走看看