zoukankan      html  css  js  c++  java
  • 页面生成图片

    <!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这个参数

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

    得之坦然,失之淡然,争其必然,顺其自然
  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/leegj/p/10156275.html
Copyright © 2011-2022 走看看