vue url生产二维码

Posted web-fusheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue url生产二维码相关的知识,希望对你有一定的参考价值。

 

 

<template>
    <div id="QRcode">
       <div class=‘QR-qrcode‘ style=‘display:none;‘></div>
    </div>
</template>
<script>

    import QRCode from qrcode-js-package

    export default {
        data () {
            return {

            }
        },
        props: {
            size: {
                type: Number,
                default: 180,
            },
            value: {
                type: String,
                default: ‘‘,
            },
        },
        watch:{
            "$parent.qrText"(newVal){
                this.getQRcodeImg((base64)=>{
                    document.getElementsByClassName("QR-download")[0].href = base64 ;
                });
            },
        },
        methods: {
            concatCanvas(dom,canvas1,padding){
                /**
                 * @param {Number} padding 图片的padding,默认20
                 * @return {String} 返回base64字符串
                 *
                 */
                var c1h = canvas1.height,
                    c1w = canvas1.width,
                    context=‘‘,
                    canvas = document.createElement("canvas");
                padding = padding || 20 ;
                canvas.height = c1h + 2.5 * padding ;
                canvas.width = c1w + 2 * padding ;
                /** end **/
                dom.appendChild(canvas);
                /** 将canvas画上白色背景 **/
                context = canvas.getContext("2d");
                context.fillStyle ="white";
                context.fillRect(0,0,canvas.width,canvas.height);
                /** end **/

                context.drawImage(canvas1, padding, padding, c1w ,c1h);
                /** end **/
                /** 返回base64,用于注入到a标签里以便下载 **/
                return canvas.toDataURL(image/jpeg,1);
                /** end **/
            },
            getQRcodeImg(fn,s){
                let url = s||this.value,
                    size = this.size,
                    dom = document.getElementById("QRcode"),
                    $qrcode = dom.getElementsByClassName("QR-qrcode")[0],
                    $main = dom.getElementsByClassName("QR-main")[0];

                new QRCode($qrcode, {
                    text: url,
                    width: size,
                    height: size,
                    correctLevel : QRCode.CorrectLevel.H
                });
                let base64 = this.concatCanvas(dom,$qrcode.getElementsByTagName("canvas")[0],15);
                fn && fn(base64);
            }
        },
    }
</script>

 

结果:

技术分享图片

 

以上是关于vue url生产二维码的主要内容,如果未能解决你的问题,请参考以下文章

如何在生产环境中代理 Vue.js 中的 URL 调用?

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置