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                         width: 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
                        width: 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
                width: 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

posted @ 2017-04-07 15:12  小鱼海棠  阅读(14889)  评论(0编辑  收藏  举报