js生成二维码和解析二维码

这个整了好久,用的包换了好几次,所以记录一下

生成二维码

  <div class="container">
    <div class="row">
      <div class="col-md-6 mx-auto my-5">
        <form class="text-center">
          <div class="form-group">
            <label for="message">Enter message:</label>
            <textarea class="form-control" id="message" name="message" rows="5" placeholder="Type your message here"></textarea>
          </div>
          <button type="button" class="btn btn-primary" onclick="generateQRCode()">Generate QR Code</button>
        </form>
        <div id="qrcode" class="mt-4"></div>
      </div>
    </div>
  </div>

  <script src="/js/qrcode.min.js"></script>
  <script>
    function generateQRCode() {
      var message = document.getElementById("message").value;
      var qrcode = new QRCode(document.getElementById("qrcode"), {
        text: message,
        width: 256,
        height: 256,
        colorDark: "#000000",
        colorLight: "#ffffff",
        correctLevel: QRCode.CorrectLevel.H
      });
    }

  </script>

解析二维码


  <div class="container">
    <div class="row">
      <div class="col-md-6 mx-auto my-5">
        <form class="text-center">
                <input type="file" id="uploadInput" accept="image/*">
            
              </form>
              <div id="result"></div>
        </form>
        <div id="qrcode" class="mt-4"></div>
      </div>
    </div>
  </div>
  




    <script src="js/reqrcode.js"></script>

  <script>
    const form = document.getElementById('uploadForm');
    const input = document.getElementById('uploadInput');
    input.onchange = function () {
        // files[0]是通过input file上传的二维码图片文件
        qrcode.decode(getObjectURL(this.files[0]));
        qrcode.callback = function (imgMsg) {
        	//imgMsg 就是解析后的路径
            document.getElementById('result').innerText = decodeStr(imgMsg);
        }
    }

    //获取预览图片路径
    var getObjectURL = function (file) {
        let url = null;
        if (window.createObjectURL != undefined) { // basic
            url = window.createObjectURL(file);
        } else if (window.URL != undefined) { // mozilla(firefox)
            url = window.URL.createObjectURL(file);
        } else if (window.webkitURL != undefined) { // webkit or chrome
            url = window.webkitURL.createObjectURL(file);
        }
        return url;
    }

    function decodeStr(str) {
            var out, i, len, c;
            var char2, char3;
            out = "";
            len = str.length;
            i = 0;
            while (i < len) {
                c = str.charCodeAt(i++);
                switch (c >> 4) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                        // 0xxxxxxx
                        out += str.charAt(i - 1);
                        break;
                    case 12:
                    case 13:
                        // 110x xxxx 10xx xxxx
                        char2 = str.charCodeAt(i++);
                        out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
                        break;
                    case 14:
                        // 1110 xxxx 10xx xxxx 10xx xxxx
                        char2 = str.charCodeAt(i++);
                        char3 = str.charCodeAt(i++);
                        out += String.fromCharCode(((c & 0x0F) << 12) |
                            ((char2 & 0x3F) << 6) |
                            ((char3 & 0x3F) << 0));
                        break;
                }
            }
            return out;
        }

  </script>

然后是两个引入的js
reqrcode和qrcode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

盖丽男

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

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

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

打赏作者

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

抵扣说明:

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

余额充值