将页面转化成图片html2canvas

128 阅读1分钟

描述:把html生成图片

<!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
        width="100"
        src=""
        alt=""
        crossorigin="anonymous"
        class="imgs"
      />
      <h3>---------------生成的图------------------</h3>
      <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://ifile.jydata.com/IMAGE/SCRIPT/c6pnj11u7u3g008079ig.png',document.querySelector('.imgs'));
    // getBase64Image('https://publicvp.oss-cn-beijing.aliyuncs.com/910b1f250627ca15f75826d6b6a61fac.jpeg',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;
        console.log(base64)
      };
    }
    
    function drawBase64Image(img) {
      var canvas = document.createElement("canvas");
      canvas.width = img.width;
      canvas.height = img.height;
      var ctx = canvas.getContext("2d");
      ctx.drawImage(img, 0, 0, img.width, img.height);
      var dataURL = canvas.toDataURL("image/png");
      return dataURL;
    }
  </script>
</html>