vue 使用 html2canvas 截图

vue 使用 html2canvas 截图

https://blog.csdn.net/weixin_41854372/article/details/99671131

 

https://www.hangge.com/blog/cache/detail_2211.html

 

// html2canvas 是把页面中一个标签 生成一张图片 (一帮用于生成海报)
// 只要浏览器支持 Canvas 即可,包括:Firefox 3.5+、Google Chrome、Opera 新的版本、IE9 以上的浏览器。
// 移动端 也就是手机 本人实际操作也是可以兼容的

一、(1)首先到官网将 html2canvas.js 下载到本地。
官网地址:http://html2canvas.hertzen.com/

二、直接在index.html 直接 引入 下载好的包

<script type="text/javascript" src="js/html2canvas.js"></script>
(注意这里的 html2canvas.js 就是我下载好的   )
  • 1
  • 2

或者: npm install --save html2canvas

三、组件使用:
组件引用: import html2canvas from ‘html2canvas’

 <div id="capture" style="padding: 10px; background: #f5da55; width: 200px;">
  <h4 style="color: #000; ">欢迎访问 hangge.com</h4>
</div>
<button type="button" name="button" onclick="convert()">开始生成</button>

//开始转换
  function convert() {
  //生成  canvas
    html2canvas(document.body).then(canvas => {
      document.body.appendChild(canvas)  
    });
 //生成海报
  html2canvas(document.querySelector("#capture")).then(canvas => {
        var imgUrl = canvas.toDataURL("image/png");
   }); 
  }

四、大概就是这样了 是不是很简单 ? 什么你还是不会 ? 好吧好吧 给你看看我参考的博客
http://www.hangge.com/blog/cache/detail_2211.html

五、 好了 现在我来说说我遇到的 bug吧 !!
1、生成好海报 成功后 , 但是海报中没有图片 , 本来是图片的位置 会留一片空白
解决方法:
①、检查是否是本地图片 因为 html2canvas 里面的运行机制 所以 如果是本地图片 就不会有这种问题
②、检查 你用的 网上路由照片 是否允许跨域访问
③、用canvas 把我们的url 照片路径转成 Base64
方法截图:
vue 使用 html2canvas 截图

	  getBase64(){
     			   var url = this.imageUrl
        //通过构造函数来创建的 img 实例,在赋予 src 值后就会立刻下载图片,相比 createElement() 创建 <img> 省去了 append(),也就避免了文档冗余和污染
			        var Img = new Image();
			        Img.crossOrigin = 'Anonymous'
			        Img.src = url + '?time=' + new Date().valueOf();
			        Img.onload=function(){ //要先确保图片完整获取到,这是个异步事件
			              var canvas = document.createElement("canvas"), //创建canvas元素
			                  width=Img.width, //确保canvas的尺寸和图片一样
			                  height=Img.height;
			                  canvas.width=width;
			                  canvas.height=height;
			                  canvas.getContext("2d").drawImage(Img,0,0,width,height); //将图片绘制到canvas中
			                  var imgUrl = document.getElementById('handleLoad2')
			                  //这里的 imgUrl  就是你要截图里面的照片标签位置了
			                  imgUrl.src = canvas.toDataURL('image/jpeg'); //转换图片为dataURL
			                  return
			        };
			    },  

前面三个都没问题但是还是 不可以bug 修复 ?看来只能用压箱底的绝招了
①、求助后台小哥给你可以 图片 转 Base64 的接口,把你生成图片 里面消失的图片 都转成 Base64 然后在生成海报就可以了 \ φ(..)
2、生成海报后 图片 有时候 头部会有多余的空白
解决方法:
①、回到你要生成海报 的顶部 在进行生成

				 	setScrollTop(scroll_top) {
				      document.documentElement.scrollTop = scroll_top;
					      window.pageYOffset = scroll_top;
					      document.body.scrollTop = scroll_top;
					    },

			setScrollTop 函数是我自己写的回到顶部的方法
			
				 

还有不懂? 加入qq一起讨论 2723934629; 
上一篇:vue引入html2canvas插件实现图片嵌入div展示下载


下一篇:js实现整页截图