vue html2canvas页面生成图片

vue html2canvas页面生成图片

npm install html2canvas

页面引入

<template>
	<div class="shareImg" id="shareImg"></div>
	<div class="mask_main" id="posterId">需要生成图片的内容</div>
</template>
<script>
	import html2canvas from "html2canvas";
	export default {
	  data() {
	    return {}
	   },
	   mounted() {
	   let _this=this
	   //页面禁止滑动
	    _this.stopScroll();
	    setTimeout(function() {
            _this.generateImage();
          }, 3500);
	   },
	   methods: {
		   bodyScroll(event) {
		     event.preventDefault();
		    },
		    stopScroll() {
		      document.body.style.overflow = "hidden";
		      document.addEventListener("touchmove", this.bodyScroll, false);
		    },
		    startScroll() {
		      document.body.style.overflow = ""; // 出现滚动条
		      document.removeEventListener("touchmove", this.bodyScroll, false);
		    },
		    // 将传入值转为整数
		    parseValue: function(value) {
		      return parseInt(value, 10);
		    },
		    generateImage: function() {
		      //生成海报图片
		      var _this = this;
		
		      // 获取想要转换的dom节点
		      var dom = document.querySelector("#posterId");
		      var box = window.getComputedStyle(dom);
		
		      // dom节点计算后宽高
		      var width = _this.parseValue(box.width);
		      var height = _this.parseValue(box.height);
		
		      // 创建自定义的canvas元素
		      var canvas = document.createElement("canvas");
		
		      // 获取画笔
		      var context = canvas.getContext("2d");
		
		      // 将所有绘制内容放大像素比倍
		      // context.scale(scaleBy, scaleBy);
		
		      // 设置需要生成的图片的大小,不限于可视区域(即可保存长图)
		      var w = document.getElementById("posterId").style.width;
		      var h = document.getElementById("posterId").style.height;
		
		      html2canvas(dom, {
		        backgroundColor: "#bef0fb",//背景色,不要背景色时为null
		        canvas: canvas,
		        useCORS: true
		      }).then(function(canvas) {
		        // 将canvas转换成图片渲染到页面上
		        var url = canvas.toDataURL("image/png"); // base64数据
		        var image = new Image();
		        image.src = url;
		        var shareImg = document.getElementById("shareImg");
		        // console.log(shareImg);
		        image.style.width = "100%";
		        image.style.height = "100%";
		        shareImg.appendChild(image);
		
		        shareImg.style.opacity = "1";
		        //页面取消禁止滑动
		        _this.startScroll();
		        Indicator.close();
		      });
		    },
	   }
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值