我是靠谱客的博主 动听唇膏,最近开发中收集的这篇文章主要介绍html2canvas截图工具初体验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

html2canvas 能够实现在用户浏览器端直接对整个或部分页面进行截屏,html2canvas脚本将当页面渲染成一个Canvas图片它不需要来自服务器任何渲染,整张图片都是在客户端浏览器创建。

html2canvas 截图原理
它不做实际的屏幕截图,而是基于DOM节点的截图,根据获取DOM的样式表来渲染页面,部分css样式不起作用,对于生成的图片来说,不能100%准确

// 要截图的DOM
 <div id="sharePic">
   <img :src="xxx.png"/>
   <p>这是分享的内容</p>
 </div>

 methods: {
      getSharePic () {
        let _this = this
        
        // 要绘制图片的DIV
        let shareBox = document.getElementById('sharePic')
        
        // 返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)
        let width = shareBox.offsetWidth
        
        // 返回元素的高度(包括元素高度、内边距和边框,不包括外边距)
        let height = shareBox.offsetHeight
        
        // 返回元素的上外缘距离最近采用定位父元素内壁的距离
        let offsetTop = shareBox.offsetTop
        
        // 创建canvas画布
        let canvas = document.createElement_x_x_x_x_x_x_x_x('canvas')
        
        // 指定绘图类型为二维绘图,未来如果支持3D绘图,就可以传递3d参数
        let context = canvas.getContext("2d")
        
        // 返回当前显示设备的物理像素分辨率与css像素分辨率的比率,可理解为像素大小比率
        let scaleBy = Math.ceil(window.devicePixelRatio)
        
        // 定义画布的宽度
        canvas.width = width * scaleBy
        
        // 定义画布的高度
        canvas.height = (height + offsetTop) * scaleBy
        
        let params = {
         useCORS: true, // 允许加载跨域的图片
         tainttest: true, // 检测每张图片都已经加载完成
         scale: scaleBy, // 添加的scale 参数
         canvas: canvas, // 自定义 canvas
         logging: false, // 日志开关,发布的时候记得改成false
         width: width,  // DOM 原始宽度
         height: height // DOM 原始高度
        }
        
        html2canvas(shareBox, params).then(function(canvas) {
          // 获取到图片的url
         let url = canvas.toDataURL()
        })
      }
    }

案例:
DOM 结构页面

html2canvas 生成图  ( 弹窗内 ) url 形式base64格式呈现

注意点:
1.不能渲染出动画的节点,否则生成的图片是破裂的
2.需要开启useCORS配置项,否则微信图片等外部图片会加载不出来
3.html2canvas 截图精度不高,部分css属性不起作用,不能完美呈现原画面样式

最后

以上就是动听唇膏为你收集整理的html2canvas截图工具初体验的全部内容,希望文章能够帮你解决html2canvas截图工具初体验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部