使用html2canvas,由html转换canvas时,出现图片丢失问题解决方案

在img标签上加上crossorigin=“anonymous”;
如果是图片地址是跨域网址,请将图片转换为base64格式;

源码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>html2canvas example</title>
  </head>

  <body>
    <div id="view">
      <input type="button" value="截图" onclick="takeScreenshot()" />
      <img
        src=""
        alt=""
        crossorigin="anonymous"
        class="imgs"
      />
      <canvas id="myCanvas"></canvas>
    </div>
  </body>
  <script src="https://unpkg.com/html2canvas@1.0.0-rc.7/dist/html2canvas.js"></script>
  <script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.fillStyle = "#FF0000";
    ctx.fillRect(0, 0, 80, 100);
    function takeScreenshot() {
      html2canvas(document.querySelector("#view")).then((canvas) => {
        document.body.appendChild(canvas);
      });
    }
    getBase64Image('https://profile.csdnimg.cn/B/1/0/3_qq_39045645',document.querySelector('.imgs'));
    
    function getBase64Image(url, ref) {
      var image = new Image();
      image.src = url + "?v=" + Math.random(); // 处理缓存
      image.crossOrigin = "*"; // 支持跨域图片
      image.onload = function () {
        var base64 = drawBase64Image(image);
        ref.src = base64;
      };
    }

更多请见:http://www.mark-to-win.com/tutorial/50890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值