• html导出图片


    有一个神奇的库:html2canvas。
    这个库简洁优美,使用方便。

    下面先看一个小demo,它需要用到一张图片:haha.jpg。

    <html>
    <head>
        <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
    </head>
    <body>
    
    <div id="mydiv">
        <h1>天下大势,为我所控</h1>
        <img src="haha.jpg">
    </div>
    </body>
    <script>
        html2canvas(document.querySelector("#mydiv"), {
            onrendered: function (canvas) {
                document.body.appendChild(canvas)
            }
        })
    </script>
    </html>
    

    html转成图片这个功能并不是一种规范,那么html2canvas这个库是如何做到“截图”的呢?
    实际上,html2canvas并没有截图,它是通过DOM读取元素的属性、样式等所有信息,以此为基础自己画出来的。
    明白了原理,也就很容易想到html2canvas无法截图视频,也无法截图SWF等内容。JS所能获取的全部信息就是html2canvas所能获取到的全部信息。

    html2canvas并非能获取任意元素的截图,它具有以下局限:

    • 不支持iframe
    • 不支持跨域图片
    • 不能在浏览器插件中使用
    • 部分浏览器上不支持SVG图片
    • 不支持Flash
    • 不支持古代浏览器和IE

    如果想把canvas导出为图片,可以使用另外一个库:canvas2image

    更多信息,参考官方文档:html2canvas

    还有另外一种将HTML页面内容导出为图片的方式,这种方式利用了img元素的src属性,src属性可以是base64编码的字符串,也可以是SVG格式的字符串。

    <!DOCTYPE html>
    <html>
    <body><h2>Input Div:</h2>
    <div id="div">
        <p>Just have a <span style='color:white; text-shadow:0 0 2px blue;'>
            TRY</span></p>
        <p><b>By Dion</b></p> 
    </div>
    <h2>Output Image:</h2>
    <script>
        var divContent = document.getElementById("div").innerHTML;
        var data = "data:image/svg+xml," +
            "<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'>"
            + "<foreignObject width='100%' height='100%'>" +
            "<div xmlns='http://www.w3.org/1999/xhtml' " +
            "style='font-size:16px;font-family:Helvetica'>"
            + divContent +
            "</div>" +
            "</foreignObject>" +
            "</svg>";
        var img = new Image();
        img.src = data;
        document.getElementsByTagName('body')[0].appendChild(img);</script>
    </body>
    </html>
    
  • 相关阅读:
    算法详解(LCA&RMQ&tarjan)补坑啦!完结撒花(。◕ˇ∀ˇ◕)
    借教室(NOIP2012)
    同余方程(NOIP2012)
    开车旅行(NOIP2012)
    剑指offer-int类型负数补码中1的个数-位操作
    直接插入排序的再再改进
    剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组
    递归的再一次理解-斐波那契数列
    剑指offer-顺时针打印矩阵-二维数组
    剑指offer-第一个只出现一次的字符-字符串和数组
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7868717.html
Copyright © 2020-2023  润新知