H5:html2canvas使用笔记

场景描述:

在H5页面需要生成截图,用于分享给其他用户。可以通过开源库html2canvas实现这一功能。

 

官方文档

github -> https://github.com/niklasvh/html2canvas

使用文档 -> http://html2canvas.hertzen.com/documentation

 

安装

//这里最好指定安装版本,原因见下文
npm i html2canvas@1.0.0-rc.4

 

使用

import html2canvas from 'html2canvas';
​
generateShareImage() {
​
        const canvas = document.createElement("canvas")
        let canvasBox = document.getElementById('imageWrapper')
        const width = canvasBox.offsetWidth
        const height = canvasBox.offsetHeight
        canvas.width = width * 2
        canvas.height = height * 2
        
        // 生成页面模糊时,可以放大一定倍数,通过调整canvas的宽高使其清晰度增加
        // const context = canvas.getContext("2d");
        // context.scale(1.5, 1.5);
​
        const options = {
          backgroundColor: null,
          canvas: canvas,
          useCORS: true
        };
​
        html2canvas(canvasBox, options).then((canvas) => {
          let dataURL = canvas.toDataURL("image/png");
          //下载
          this.downloadImage(dataURL);
          //显示
          var share = document.getElementById('shareImg');
          share.src = dataURL;
        })
      },
​
      downloadImage(url) {
        let link = document.createElement("a");
        link.href = url;
        link.setAttribute("download", "截图.png");
        link.click();
      },

 

踩坑记录

1、截图区域存在网络图片时,会有跨域问题

解决方法:

(1) 将图片放置服务器,通过nginx进行代理资源,前端访问图片便不涉及到跨域问题

(2) 使用base64图片传输,base64太大不便于传输的话,让后端写一个接口,上传图片base64数据返回图片地址

2、在ios微信13.4.1上,出现无法截图的情况

微信社区帖子:https://developers.weixin.qq.com/community/develop/doc/00006eee95488060bb1ac5bd85b000

解决方法:换用1.0.0-rc.4版本。注意,要先把1.0.0-rc.5卸载了再装1.0.0-rc.4才有效

npm uninstall html2canvas
npm i html2canvas@1.0.0-rc.4

3、截图尺寸需要适配,不同容器上可能截图大小不一致。

4、其他

可能个别标签属性支持不够,不过我没碰到。

关于截图清晰度不够的问题,可以通过调整canvas来提高清晰度,若效果不明显,推荐另一个库 https://github.com/tsayen/dom-to-image,该库的清晰度比html2canvas高一些,不过对于标签属性的支持可能现在比不上html2canvas,毕竟这个库好几年没更新了,有时会出现截图失败的情况。

 

另外,分享两篇不错的博客

html2canvas截屏在H5微信移动端踩坑

html2canvas以及domtoimage的使用踩坑总结

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KWMax

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值