html2canvas图片截屏

5 篇文章 0 订阅

前言

工作使用到了html2canvas插件,刚开始踩了不少坑,在此记录,引以为戒

单纯使用html2canvas截屏,不下载(以图片为例)

<body>
  <ul id="oUl" style="float: left;">
    <li>
      <button class="screenCapture">截屏</button>
    </li>
    <li><img src="https://picb7.photophoto.cn/03/491/03491637_1.jpg" width="200" height="150" /></li>
    <li><img src="https://picb0.photophoto.cn/39/329/39329210_1.jpg" width="200" height="150" /></li>
    <li><img src="https://picb2.photophoto.cn/37/898/37898422_1.jpg" width="200" height="150" /></li>
    <li><img src="https://pic32.photophoto.cn/20140914/0005018405154000_b.jpg" width="200" height="150" /></li>
    <li><img src="https://picb2.photophoto.cn/37/241/37241172_1.jpg" width="200" height="150" /></li>
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
<script>
  var oUl = document.getElementById("oUl");
  $(".screenCapture").on("click", function(event) {
        event.preventDefault();
        html2canvas(oUl,{
          // useCORS: true,是否尝试使用 CORS 从服务器加载图像(自己测试的时候把该参数注释了也没出错,但是之前截屏时图片无法显示出来,上网搜的解决办法好多都跟他类似,网上搜的写法为setAttribute("crossOrigin",'Anonymous'),但此之前也没解决掉我的问题)
          /* width: window.screen.availWidth,
          height: window.screen.availHeight,
          windowWidth: document.body.scrollWidth,
          windowHeight: document.body.scrollHeight,
          x: 0,
          y: window.pageYOffset, //这也是看的有位兄台说当页面有滚动条时截屏,会显示出来大片空白的解决办法,但我自己没遇到此问题。个人感觉这些参数一般来说可能不太用得到*/
          allowTaint: true,  //是否允许跨域图像污染画布(此参数很重要,注释的话会导致图片无法显示(也可能是截屏的时候没截到))
          taintTest: false,//在渲染前测试图片(官网没看到这个参数,参考的其他兄台的帖子)
        }).then(function(canvas) {
          // canvas.style.marginLeft = "250px";
          document.body.appendChild(canvas);
        }); 
      }); 
</script>
  
</body>
截屏效果:

在这里插入图片描述
参考链接:
https://www.cnblogs.com/xiaokebb/p/8946777.html
https://blog.csdn.net/PT1993/article/details/90311409

使用html2canvas截屏并下载报错了o(╥﹏╥)o哪位大神可以指点一下

报错:Uncaught (in promise) DOMException: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported
看了下方两篇文章依旧没有成功
https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL
https://developer.mozilla.org/zh-CN/docs/Web/HTML/CORS_enabled_image
代码如下:

var oUl = document.getElementById("oUl");
  $(".screenCapture").on("click", function(event) {
        event.preventDefault();
        html2canvas(oUl,{
          useCORS: true,
          allowTaint: true,  
          taintTest: false,
        }).then(function(canvas) {
          document.body.appendChild(canvas);
          var oCanvas = document.getElementsByTagName('canvas')[0];
          var dataURL = oCanvas.toDataURL('image/jpeg', 1.0);
          download(dataURL);
        });
      }); 
      function download(dataURL) {
        var a = document.createElement('a');
        document.body.appendChild(a);
        a.innerHTML = '下载按钮';
        a.download = 'downloadCanvasImage.png';
        a.href = dataURL;
        a.click();
      };

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xiao_cheng_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值