前端我爱编程

qrcode.js使用js生成二维码(并下载)的实践

2017-08-24  本文已影响1166人  刘小胖LJX

github: qrcode.js生成二维码并下载--BY LucaLJX

Paste_Image.png

知识点

Base64是一种用64个字符来表示任意二进制数据的方法。 -- 廖雪峰官方网站

Base64编码有哪些情景需求? -- 知乎

案例场景

qrcode.js及jquery-qrcode.js实现生成二维码

1.html 代码

  <div id="qrcode"></div>
  <!-- 用于生成二维码的容器 -->

2.js 代码

  // qrcode.js
  var qrcode = new QRCode(document.getElementById("qrcode"), {
    text: "i am the first qrcode",
    width: 128, //生成的二维码的宽度
    height: 128, //生成的二维码的高度
    colorDark : "#000000", // 生成的二维码的深色部分
    colorLight : "#ffffff", //生成二维码的浅色部分
    correctLevel : QRCode.CorrectLevel.H
  });
  //jquery-qrcode.js
  var qrcode = $('#qrcode').qrcode({
    width: 128,
    height: 128,
    text: "size doesn't matter"
  });

3.qrcode.js 与jquery-qrcode.js区别

4.qrcode.js生成二维码原理

img-1.jpg

点击按钮,生成的二维码图片保存到本地

实现原理

基于qrcode.js案例demo实现将生成的二维码保存为本地图片

  <a id="downloadLink"></a>
  <button type="button" onclick="downloadClick()">下载</button>
  //js
  function downloadClick () {
    // 获取base64的图片节点
    var img = document.getElementById('qrcode').getElementsByTagName('img')[0];
    // 构建画布
    var canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    canvas.getContext('2d').drawImage(img, 0, 0);
    // 构造url
    url = canvas.toDataURL('image/png');
    // 构造a标签并模拟点击
    var downloadLink = document.getElementById('downloadLink');
    downloadLink.setAttribute('href', url);
    downloadLink.setAttribute('download', '二维码.png');
    downloadLink.click();
  }
  //jquery
  function downloadClick () {
    // 获取base64的图片节点
    var img = $('#qrcode img').[0];
    // 构建画布
    var canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    canvas.getContext('2d').drawImage(img, 0, 0);
    // 构造url
    url = canvas.toDataURL('image/png');
    // 构造a标签并模拟点击
    var downloadLink = $('#downloadLink').attr("href", url).attr("download", "二维码.png");
    downloadLink[0].click();
  }

BY--LucaLJX

上一篇 下一篇

猜你喜欢

热点阅读