html2canvas 页面截图

指定div的内容进行截图

引入插件:

<script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js"></script>
<a href="javascript:void(0)" class="gen-posters">生成海報</a>
<div class="box canvasbox" style="display:none;">
	<p style="color:red">123123123</p>
</div>
<script type="text/javascript">
//这是另一种写法
$(function () {

	$(".gen-posters").click(function(){
		var canvasbox = document.getElementById("white_content_"+shop_id).getElementsByClassName("canvasbox")[0];
        canvasbox.style.display="block";
		createImg(canvasbox, function (base64Url) {
            //console.log(base64Url)
            //写入图片,并显示
            var cavas = document.getElementById("white_content_"+shop_id).getElementsByClassName("cavas")[0];
            cavas.innerHTML = "";
            var img=document.createElement("img");
            img.src = base64Url;
            cavas.appendChild(img);

            //隐藏原html
            canvasbox.style.display="none";
        });
	});
	function createImg(_dom, callback) {
            //截图目标div
            const dom = _dom;
            // 创建一个新的canvas
            const canvas = document.createElement('canvas');
            const width = dom.offsetWidth;  // 可见屏幕的宽
            const height = dom.offsetHeight;  // 可见屏幕的高
            const scale = window.devicePixelRatio;  // 设备的devicePixelRatio

            // 将Canvas画布放大scale倍,然后放在小的屏幕里,解决模糊问题
            canvas.width = width * scale;
            canvas.height = height * scale;
            var ctx = canvas.getContext("2d");
            ctx.scale(scale, scale);
            //解决放大图片后,上半部分出现空白

            //计算位置
            const left = dom.getBoundingClientRect().x;
            const top = dom.getBoundingClientRect().y;
            //console.log(left)
            //console.log(top)
            //const reHeight = dom.offset().top;//往上偏移當前圖片距離頂部的距離
            //const left = dom.get(0).getBoundingClientRect().x;
            //const top = dom.get(0).getBoundingClientRect().y;
            ctx.translate(-left, -top);


            html2canvas(dom, {
                canvas: canvas,
                scale: scale,
                useCORS: true,
                logging: false,
                width: width,
                hegiht: height,
            }).then((canvas) => {
                const context = canvas.getContext('2d');
                // 关闭抗锯齿形
                context.mozImageSmoothingEnabled = false;
                context.webkitImageSmoothingEnabled = false;
                context.msImageSmoothingEnabled = false;
                context.imageSmoothingEnabled = false;
                //生成base64图片数据
                var dataUrl = canvas.toDataURL();
                //let userImg = dataUrl.split(",")[1];
                callback(dataUrl);
            });
        }
});

    
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值