vue2+qrcodejs2实现生成和下载二维码

安装qrcodejs

npm install qrcodejs2 

引入

import QRCode from 'qrcodejs2'

代码
html部分

<div class="qr-code">
  <div id="qrcode" ref="qrCodeImage"></div>
    <!-- 作为下载二维码使用 -->
    <a ref="downLoadImgUrl" style="display: none"></a>
</div>
<el-button type="info" @click="downQrcodeImg">下载二维码</el-button>

js部分

// 生成二维码
getCode() {
    document.getElementById('qrcode').innerHTML = '' // 防止重复生成二维码
    new QRCode(this.$refs.qrCodeImage, {
        text: 'http://xxxxx', // 需要变成二维码的文本
        width: 200,
        height: 200,
        colorDark: '#333', // 二维码颜色
        colorLight: '#fff', // 二维码背景颜色
        correctLevel: QRCode.CorrectLevel.L //容错率,L/M/H
    });
    let qrcodeCanvas = (this.$refs.qrCodeImage.getElementsByTagName('canvas'))[0]
    this.qrcodeImgUrl = qrcodeCanvas.toDataURL('image/png'); // 作为下载图片资源
},
// 下载二维码
downQrcodeImg() {
    let downloadLink = this.$refs.downLoadImgUrl;
    downloadLink.setAttribute('href', this.qrcodeImgUrl);
    downloadLink.setAttribute(
        'download',
        `二维码_${new Date().getTime()}.png`
    );
    downloadLink.click();
    URL.revokeObjectURL(downloadLink.href);
},

完整代码

<template>
    <div class="qr-code">
        <div id="qrcode" ref="qrCodeImage"></div>
        <!-- 作为下载二维码使用 -->
        <a ref="downLoadImgUrl" style="display: none"></a>
    </div>
    <el-button type="info" @click="downQrcodeImg">下载二维码</el-button>
</template>
<script>
import QRCode from 'qrcodejs2'
export default {
    data() {
        return {
            qrcodeImgUrl: '',
        }
    },
    created() {
        this.getCode()
    },
    methods: {
        // 生成二维码
        getCode() {
            document.getElementById('qrcode').innerHTML = '' // 防止重复生成二维码
            new QRCode(this.$refs.qrCodeImage, {
                text: 'http://xxxxx', // 需要变成二维码的文本
                width: 200,
                height: 200,
                colorDark: '#333', // 二维码颜色
                colorLight: '#fff', // 二维码背景颜色
                correctLevel: QRCode.CorrectLevel.L //容错率,L/M/H
            });
            let qrcodeCanvas = (this.$refs.qrCodeImage.getElementsByTagName('canvas'))[0]
            this.qrcodeImgUrl = qrcodeCanvas.toDataURL('image/png'); // 作为下载图片资源
        },
        // 下载二维码
        downQrcodeImg() {
            let downloadLink = this.$refs.downLoadImgUrl;
            downloadLink.setAttribute('href', this.qrcodeImgUrl);
            downloadLink.setAttribute(
                'download',
                `二维码_${new Date().getTime()}.png`
            );
            downloadLink.click();
            URL.revokeObjectURL(downloadLink.href);
        },
    }
}
</script>

效果图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值