ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用html2canvas.js将HTML生成图片

2021-08-06 19:00:13  阅读:270  来源: 互联网

标签:function canvas false js html2canvas width HTML var document


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../script/jquery-1.9.1.min.js"></script>
    <script src="../script/html2canvas.js"></script>
    <style type="text/css">
        .divBody {
            position: absolute;
            width: 100%;
            height: 100%;
            background: url(../images/bg.jpg) no-repeat center top;
            background-size: 100% 100%;
            font-family: "黑体";
            color: #292929;
            letter-spacing: 2px;
            z-index: 1000;
        }

        .divInfo {
            width: 76%;
            margin-left: 12%;
            position: relative;
            top: 25%;
            text-align: center;
        }
        #btnDown{
            position:absolute;
            top:15px;
            right:10px;
            z-index:1000;
            cursor: pointer;
        }

    </style>
</head>

<body>
    <div id="divBody" class="divBody">
        <div class="divInfo" id="divInfo">
            <h1>剑来语录</h1>
            <div>
                <p>我住人间万古宅,大日高升在墙东。</p>
                <p>睁眼便觉扰清梦,敕令明月坠其中。</p>
                <p>天上仙佛三百万,遇我也须称上神。</p>
                <p>醉乘白鹿驾青虬,列仙遇我求醇酒。</p>
                <p>挂冠天宫桂枝上,手抓金乌做炭笼。</p>
                <p>悲哉仙人千秋梦,一梦见我误长生。</p>
            </div>
        </div>
    </div>
    <div id="btnDown">
        <img src="../images/share.png" style="width:2rem;height:2rem;" />
    </div>
</body>

</html>
<script type="text/javascript">
    $(function () {
        $("#btnDown").click(function () {
            downPNG("下载图片.png", "divBody");
        });
    });

    function downPNG(pngName, pngId) {
        var scaleBy = getDPR();//获取像素比

        var canvas = document.createElement('canvas');// 创建自定义 canvas 元素
        // 设定 canvas 元素属性宽高为 DOM 节点宽高 * 像素比
        var width = document.getElementById(pngId).clientWidth;
        var height = document.getElementById(pngId).clientHeight;

        canvas.width = width * 2;
        canvas.height = height * 2;

        var context = canvas.getContext('2d');
        // 将所有绘制内容放大像素比倍
        context.scale(2, 2);
        var rect = document.getElementById(pngId).getBoundingClientRect(); //获取元素相对于视察的偏移量
        context.translate(-rect.left, -rect.top); //设置context位置,值为相对于视窗的偏移量负值,让图片复位

        html2canvas(document.getElementById(pngId), {
            canvas,
            dpi: 300,
            scale: 1,
            useCORS: true, //(图片跨域相关)
            allowTaint: false, //允许跨域(图片跨域相关)
            onrendered: function (imgCanvas) {
                var imgData = imgCanvas.toDataURL('image/octet-stream');
                if (imgCanvas.msToBlob) { // IE 9+浏览器
                    var blob = imgCanvas.msToBlob();
                    window.navigator.msSaveBlob(blob, pngName);
                } else {
                    saveFile(imgData, pngName);
                }
            }
        });
    }

    function saveFile(data, filename) {
        
        //微信浏览器不能直接下载图片,需要展示一张图片长按下载...        
        if (is_weixn()) {
            //方法一
            var img = document.createElement('img');
            img.src = data;
            img.style.width = "100%";
            $("#divBody").html(img);

            //方法二
            // var html = "<img src ='" + data + "' style='width:100%;height:100%' />";
            // $("#divBody").html(html);

            $("#btnDown").hide();//隐藏分享按钮

            alert("图片生成成功,长按保存图片!");//提示用户长按下载图片
        } else {
            console.log(1);
            //直接下载图片
            var save_link = document.createElement('a');
            save_link.href = data;
            save_link.download = filename;
            var event = document.createEvent('MouseEvents');
            event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            save_link.dispatchEvent(event);
        }
        

        

        
    };

    function getDPR() {
        if (window.devicePixelRatio && window.devicePixelRatio > 1) {
            return window.devicePixelRatio;
        }
        return 2;
    }

    function is_weixn() {
        var ua = navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == "micromessenger") {
            return true;
        } else {
            return false;
        }
    }

</script>

  

标签:function,canvas,false,js,html2canvas,width,HTML,var,document
来源: https://www.cnblogs.com/xy0710/p/15109998.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有