码迷,mamicode.com
首页 > Web开发 > 详细

vue url生产二维码

时间:2018-12-01 22:04:30      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:raw   new   play   return   from   返回   tco   method   exp   

 

 

<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生产二维码

标签:raw   new   play   return   from   返回   tco   method   exp   

原文地址:https://www.cnblogs.com/web-fusheng/p/10050718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!