• 页面生成图片


    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>htmltopic</title>
    
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcss.com/html2canvas/0.5.0-beta3/html2canvas.min.js"></script>
    
    
    <style>
    * {
    margin: 0;
    }
    
    
    .test {
     100px;
    height: 100px;
    text-align: center;
    line-height: 100px;
    background-color: #87CEEB;
    display: inline-block;
    vertical-align: top;
    }
    
    
    canvas {
    margin-right: 5px;
    }
    
    
    .down {
    float: left;
    margin: 40px 10px;
    }
    .down2 {
    float: left;
    margin: 40px 30px;
    }
    </style>
    </head>
    <body>
    
    
    <div class="test">测试</div>
    <div><a class="down" href="" download="downImg">下载</a>
    </div>
    <div><a class="down2" href="" download="downImg">下载2</a></div>
    <script>
    //直接选择要截图的dom,就能截图,但是因为canvas的原因,生成的图片模糊
    //html2canvas(document.querySelector('div')).then(function(canvas) {
    // document.body.appendChild(canvas);
    //});
    //创建一个新的canvas
    var canvas2 = document.createElement("canvas");
    let
    _canvas = document.querySelector('div');
    var w = parseInt(window.getComputedStyle(_canvas).width);
    var h = parseInt(window.getComputedStyle(_canvas).height);
    //将canvas画布放大若干倍,然后盛放在较小的容器内,就显得不模糊了
    canvas2.width = w * 2;
    canvas2.height = h * 2;
    canvas2.style.width = w + "px";
    canvas2.style.height = h + "px";
    //可以按照自己的需求,对context的参数修改,translate指的是偏移量
    // var context = canvas.getContext("2d");
    // context.translate(0,0);
    var context = canvas2.getContext("2d");
    context.scale(2, 2);
    html2canvas(document.querySelector('div'), { canvas: canvas2 }).then(function(canvas) {
    //document.body.appendChild(canvas);
    //canvas转换成url,然后利用a标签的download属性,直接下载,绕过上传服务器再下载
    document.querySelector(".down").setAttribute('href', canvas.toDataURL());
    });
    </script>
    
    
    <script language="javascript">
    //这是另一种写法
    $(function () {
    $(".down2").click(function () {
    html2canvas($(".test")).then(function (canvas) {
    var imgUri = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); // 获取生成的图片的url
    window.location.href = imgUri; // 下载图片
    });
    
    
    //html2canvas($('.tongxingzheng_bg'), {
    // onrendered: function (canvas) {
    // var data = canvas.toDataURL("image/png");//生成的格式
    // //data就是生成的base64码啦
    // alert(data);
    // }
    //});
    });
    });
    </script>
    </body>
    </html>


    使用htmnl2canvas:http://html2canvas.hertzen.com/

    优化清晰以及问题解决方案:https://segmentfault.com/a/1190000011478657?utm_source=tag-newest

    附:插件更改https://segmentfault.com/a/1190000007707209

    这里有一个

    html2canvas(html2canvasdiv, {
    allowTaint : false,
    taintTest : false,
    onrendered : function(canvas) {
    var dataUrl = canvas.toDataURL();
    img.src = dataUrl;

    }

    });
    allowTaint : false这个参数

    是网友提供的 但是否可行还没去实验

    得之坦然,失之淡然,争其必然,顺其自然
  • 相关阅读:
    ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
    纷享集成API函数注意点
    纷享开发注意事项:
    Oracle操作表的常见语法
    数据库中的自连接怎么理解
    decode()和SQL语法case表达式
    浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断
    vue-seamless-scroll 无缝滚动
    vue 实现表格无缝滚动
    echarts5 在vue3 中tooltip显示不出来
  • 原文地址:https://www.cnblogs.com/leegj/p/10156275.html
Copyright © 2020-2023  润新知