征服世界的卡比兽
发布于 2023-12-09 / 246 阅读 / 0 评论 / 0 点赞

Vue合成广告图片+二维码图片

Vue合成广告图片+二维码图片

实现方法

主要用到两个库:
qrcanvas和_html2canvas
 
1.先生成二维码覆盖在广告图上面
2.html转canvas canvas转成base64图片
3.广告图src替换为base64_

注意:

  1. 微信内不支持保存canvas为图片,所以多了第三步
  2. iframe标签 display:none 时,导致生成的图片空白
async generateQrcode() {
  this.showQr = true;
  let canvas1 = qrcanvas({
    data: decodeURIComponent(
      "http://xiaoshuiw.com/jxjy_app/user/register?code=188"
    ),
    size: 80
  });
  setTimeout(() => {
    this.$refs.ttt.appendChild(canvas1);
    html2canvas(this.$refs.qrmain,{backgroundColor: null}).then(canvas => {
      this.$refs.ttt.innerHTML=""
      this.$refs.img.src=canvas.toDataURL("image/png")

    });
  }, 100);
}

qrcanvas和_html2canvas_使用示例

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/qrcanvas@3"></script>
    <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.7/dist/html2canvas.min.js"></script>
  </head>
  <body>
    <div id="qrcode"></div>
    <div id="capture" style="padding: 10px; background: #f5da55">
      <h4 style="color: #000">Hello world!</h4>
    </div>
    <script>
      const canvas = qrcanvas.qrcanvas({
        data: "hello, world",
      });
      document.getElementById("qrcode").appendChild(canvas);

      html2canvas(document.querySelector("#capture")).then((canvas) => {
        document.body.appendChild(canvas);
      });
    </script>
  </body>
</html>