zoukankan      html  css  js  c++  java
  • jquery生成二维码图片

    1.插件介绍

    jquery.qrcode.min.js插件是jq系列的基于jq,在引入该插件之前要先引入jq。能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码。

    闲话少说,看demo吧!(haha...)

    2.快速使用demo

    简单介绍:这是一款快速应用案例,没有太特殊的需求的话够用了。鉴于需求,本例是把二维码生成了图片,可以保存到手机,然后发送给好友,直接识别二维码。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>二维码分享xx</title>
     6         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     7         <link rel="stylesheet" type="text/css" href="jquery.mobile-1.4.5.min.css" />
     8         <script src="jquery-1.8.3.min.js"></script>
     9         <script src="jquery.mobile-1.4.5.min.js"></script>
    10         <script src="jquery.qrcode.min.js"></script>
    11         <style>
    12             * {
    13                 font-family: "微软雅黑";
    14             }
    15             #wxshare {
    16                 font-weight: normal;
    17                 background: #3d85c6;
    18                 border-radius: 5px;
    19                 padding: 5px 7px;
    20                 color: #fff;
    21                 border: none;
    22             }
    23             .tc {
    24                 text-align: center;
    25             }
    26             
    27             .block {
    28                 display: block;
    29             }
    30             .green {
    31                 color: #2d7104;
    32             }
    33             #myPopup small {
    34                 padding: 8px;
    35                 border-bottom: 1px solid #ccc;
    36             }
    37             #qrcodeImg {
    38                 margin-top: 20px;
    39                 padding: 3px;
    40                 border: 1px solid #ccc;
    41             }
    42         </style>
    43     </head>
    44     <body>
    45         <div data-role="page">
    46             <div data-role="header" data-theme="b">
    47                 <h1>七月</h1>
    48             </div>
    49             <div data-role="main" class="ui-content">
    50                 <a id='wxshare' data-rel="popup" href="#myPopup" class="ui-btn ui-corner-all" data-transition="slidedown"><span>邀请好友</span></a>
    51                 <!--弹窗-->
    52                 <div data-role="popup" id="myPopup" data-position-to="window" class="ui-content">
    53                     <div class='tc'>
    54                         <small class="green">长按一下二维码保存图片发送给好友</small>
    55 
    56                         <div id="code"></div>
    57                         <img src="" id="qrcodeImg"/><br>
    58                     </div>
    59                 </div>
    60             </div>
    61         </div>
    62 
    63         <script>
    64             $(function() {
    65                 $('#wxshare').tap(function() {
    66                     var qrcode = $('#code').qrcode({
    67                         render: "canvas", //也可以替换为table
    68                          120,
    69                         height: 120,
    70                         text: "http://www.cnblogs.com/imelemon"/*可以通过ajax请求动态设置*/
    71 
    72                     }).hide();
    73                     //将生成的二维码转换成图片格式
    74                     var canvas = qrcode.find('canvas').get(0);
    75                     $('#qrcodeImg').attr('src', canvas.toDataURL('image/jpg'));
    76                 });
    77 
    78             });
    79         </script>
    80 
    81     </body>
    82 
    83 </html>

    demo运行效果简略如下:有兴趣可以自己尝试一下

    3.用法分析

    (1)将jquery.qrcode.min.js和jquery添加到您的网页中

    1 <script src="jquery-1.8.3.min.js"></script>
    2 <script type="text/javascript" src="jquery.qrcode.min.js"></script>

    注意:2中demo引入jqueryMobile是为了样式和交互效果加的。基本引入这两个就可以使用了!

    (2)然后要创建一个二维码的容器:
    <div id="code"></div>

    (3)加入js在容器中创建二维码:
    <script>
                $(function() {
                    $('#wxshare').tap(function() {
                        var qrcode = $('#code').qrcode({
                            render: "canvas", //也可以替换为table
                             120,
                            height: 120,
                            text: "http://www.cnblogs.com/imelemon/p/6677956.html"/*可以通过ajax请求动态设置*/
    
                        }).hide();
                        //将生成的二维码转换成图片格式
                        var canvas = qrcode.find('canvas').get(0);
                        $('#qrcodeImg').attr('src', canvas.toDataURL('image/jpg'));
                    });
    
                });
            </script>

    4.进阶用法

    (1)设置二维码大小

    //生成100*100(宽度100,高度100)的二维码
             jQuery('#qrcode').qrcode({
                 render  : "canvas",//也可以替换为table
                 width   : 100,//单位是像素
                 height  : 100,
                 text    : "http://www.cnblogs.com/imelemon/p/6677956.html"
             });

    (2)设置二维码颜色

     //生成前景色为红色背景色为白色的二维码
     jQuery('#qrcode').qrcode({
         render    : "canvas",//也可以替换为table
         foreground: "#C00",
         background: "#FFF",
         text : "http://www.cnblogs.com/imelemon/p/6677956.html"
    7 });

    (3)设置二维码生成方式

    //使用table/canvas生成
     jQuery('#qrcode').qrcode({
        render  : "table",//使用canvas生成就设置为 canvas
        text : "http://www.cnblogs.com/imelemon/p/6677956.html"  
    });

    (3)将二维码转成图片格式:

    ->如2中demo

    $('#wxshare').tap(function() {
            var qrcode = $('#code').qrcode({
                    render: "canvas", //也可以替换为table
                     120,
                    height: 120,
                    text: "http://www.cnblogs.com/imelemon"/*可以通过ajax请求动态设置*/
    
    }).hide();
            //将生成的二维码转换成图片格式
        var canvas = qrcode.find('canvas').get(0);
        $('#qrcodeImg').attr('src', canvas.toDataURL('image/jpg'));
    });

    5.遇坑及解决方法

    遇到的问题:

    1.生成了二维码图片,保存用微信识别的时候部分安卓机不去识别;

    解决方法:

    可能生成二维码的url过长,可适当增大qrcode()中二维码的宽高;

    注意:url如果过长生成的二维码会有问题,建议直接url字符串不要过长150个字符以内;

    另外一个二维码demo下载地址 https://github.com/yingliyu/qrCode.git

    参考:http://www.jq22.com/jquery-info294

    日益努力,而后风生水起。众生皆苦,你也不能认输O(∩_∩)O
  • 相关阅读:
    Element-ui 中设置input中字符长度并提示
    vue.js如何动态的获取locoalStorage中事先存好的值
    vue中的v-if和v-show的区别详解
    vue.js中ref和$refs的使用及示例讲解
    vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
    flex 如何设置换行flex-wrap
    JS排序之localeCompare( )方法的使用说明及相关案例
    JS—如何按日期对象数组进行排序,然后按时间顺序进行降序排序?
    遇到了编译报错:no method declared with objective-c selector error
    在IT界取得成功应该知道的10件事
  • 原文地址:https://www.cnblogs.com/yingliyu/p/6677956.html
Copyright © 2011-2022 走看看