vue中实现二维码生成,并支持下载

1.导入npm install qrcodejs2 --save
引用页面导入
import QRCode from ‘qrcodejs2’;
import html2canvas from “html2canvas”;//下载图片

  downLoadQcode(){
      //关系图截取
      if (!document.getElementById('qrcode').getElementsByTagName('img')[0]) {
        this.$alert("暂无二维码下载", "信息", {
          confirmButtonText: "确定"
        });
        return false;
      }
      html2canvas(document.getElementById('qrcode').getElementsByTagName('img')[0]).then(canvas => {
        this.imgmap = canvas.toDataURL();
        if (window.navigator.msSaveOrOpenBlob) {
          var bstr = atob(this.imgmap.split(",")[1]);
          var n = bstr.length;
          var u8arr = new Uint8Array(n);
          while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
          }
          var blob = new Blob([u8arr]);
          window.navigator.msSaveOrOpenBlob(
            blob,
            this.currow.UnitName + '二维码.png'
          );
        } else {
          // 这里就按照chrome等新版浏览器来处理
          const a = document.createElement("a");
          a.href = this.imgmap;
          a.setAttribute("download", this.currow.UnitName + '二维码');
          a.click();
        }
      });
    },
 //生成二维码
 creatQrCode(row) {
        let Base64 = require('js-base64').Base64;
        var data = { UnitCode: row.unitCode, UnitName: row.unitName, BussinessType: encodeURI(row.businessType) };
        this.currow=data;//用于下载二维码时命名
        var text = JSON.stringify(data);
        var params = "https://123.1.1.1/wxapp/" + Base64.encode(text);
        var qrcode = new QRCode(this.$refs.qrCodeUrl, {
            text: params, // 需要转换为二维码的内容
            width: 400,
            height: 400,
            colorDark: '#000000',
            colorLight: '#ffffff',
            correctLevel: QRCode.CorrectLevel.H
        })
    },
要在Vue3生成二维码下载,可以使用qrcode-generator库和html2canvas库。下面是实现的步骤: 1. 安装依赖: ``` npm install qrcode-generator html2canvas --save ``` 2. 在组件引入依赖: ```javascript import QRCode from 'qrcode-generator'; import html2canvas from 'html2canvas'; ``` 3. 在组件定义生成二维码的方法: ```javascript generateQRCode() { // 创建二维码实例 const qr = QRCode(0, 'L'); // 设置二维码内容 qr.addData('https://www.example.com'); qr.make(); // 获取二维码图片的base64编码 const base64 = qr.createDataURL(); // 创建一个img标签 const img = new Image(); // 设置img标签的src属性为二维码图片的base64编码 img.src = base64; // 将img标签插入到DOM document.body.appendChild(img); // 使用html2canvas库将DOM转换为canvas html2canvas(document.body).then(canvas => { // 将canvas转换为图片的base64编码 const imageBase64 = canvas.toDataURL('image/png'); // 创建一个a标签 const a = document.createElement('a'); // 设置a标签的href属性为图片的base64编码 a.href = imageBase64; // 设置a标签的download属性为下载的文件名 a.download = 'qrcode.png'; // 将a标签插入到DOM document.body.appendChild(a); // 模拟点击a标签进行下载 a.click(); // 将a标签从DOM移除 document.body.removeChild(a); }); } ``` 4. 在组件调用生成二维码的方法: ```html <template> <div> <button @click="generateQRCode">生成二维码下载</button> </div> </template> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值