利用 qrcode 在图片生成二维码

百度网盘下载:  qrcode  提取码: ubax,详细文档说明:请查看

对比图

效果图

下载下来后我把他引入下面页面--qr.html(路径记得换成你自己的)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <title>利用 qrcode 在图片生成二维码</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    #app {
      width: 100%;
      max-width: 7.5rem;
      margin: 0 auto;
    }

    #Original,
    #Qr {
      display: none;
    }

    #Poster {
      display: block;
      width: 100%;
    }
  </style>
  <script>
    !(function (doc, win) {
      var docEl = document.documentElement,
        resizeEvt =
          "orientationchange" in window ? "orientationchange" : "resize",
        recalc = function () {
          var clientWidth = docEl.clientWidth;
          if (!clientWidth) return;
          if (clientWidth >= 750) {
            docEl.style.fontSize = "100px";
          } else {
            docEl.style.fontSize = 100 * (clientWidth / 750) + "px";
          }
        };

      if (!doc.addEventListener) return;
      window.addEventListener(resizeEvt, recalc, false);
      document.addEventListener("DOMContentLoaded", recalc, false);
    })(document, window);
  </script>
</head>

<body>
  <div id="app">
    <canvas id="Original"></canvas>
    <canvas id="Qr"></canvas>
    <img id="Poster" data-src="http">
  </div>
  <script src="./qrcode.min.js"></script>
  <script>
    let img = new Image();
    img.src = './shenxianjiejie.jpg';
    img.onload = function () {
      let original = document.getElementById('Original');
      let context = original.getContext('2d');
      context.save(); // 保存当前环境
      original.setAttribute('width', this.width);
      original.setAttribute('height', this.height);
      // 向画布上绘制图片 
      context.drawImage(this, 0, 0, this.width, this.height);
      // 进行绘制
      context.restore();
      let qr = document.getElementById('Qr');
      // 二维码的内容
      let qrContent = '这里是文字,可以是链接';
      QRCode.toCanvas(qr, qrContent, (error) => {
        if (error) {
          console.error(error)
        }
        let image = new Image();
        image.src = qr.toDataURL('image?png');
        image.onload = function () {
          // 保存已绘制的图片
          context.save();
          // 绘制二维码的位置和大小
          context.drawImage(this, 40, 40, 200, 200);
          // 进行绘制
          context.restore();
          let poster = document.getElementById('Poster')
          poster.setAttribute('src', original.toDataURL('image/png'));
        }
      })
    }
  </script>
</body>

</html>

由于我这里引用是本地图片,所以需要搭建本地服务,我这里在 node 环境下搭建了简单的 express 服务

const express = require('express')
const server = express();
const port = 8496;

server.use(express.static('./'));

server.listen(port, _ => {
  console.log(`http://localhost:${port}`);
})

现在运行服务后直接访问 http://localhost:8496/qr.html

 

posted @ 2020-02-24 16:02  Tsingtree  阅读(875)  评论(0编辑  收藏  举报