轉: jquery.qrcode.js生成二維碼插件&轉成圖片格式

原文地址: https://blog.csdn.net/u011127019/article/details/51226104css

 

1.qrcode實際上是經過使用jQuery實現圖形渲染,畫圖,支持canvas(HTML5)和table兩種方式,jquery

github源碼地址:git

https://github.com/jeromeetienne/jquery-qrcodegithub

參數說明:canvas

  1. render   : "canvas",//設置渲染方式    
  2. width       : 256,     //設置寬度    
  3. height      : 256,     //設置高度    
  4. typeNumber  : -1,      //計算模式    
  5. correctLevel    : QRErrorCorrectLevel.H,//糾錯等級    
  6. background      : "#ffffff",//背景顏色    
  7. foreground      : "#000000" //前景顏色    

2.使用實例:微信

插件引用ide

  1.  <script src="../Js/jquery-1.11.3.min.js"></script>  
  2.  <script src="../Js/jquery-qrcode-master/jquery.qrcode.min.js"></script>  

簡單實例1:測試

  1. <div id="code"></div>  
  2. <script>  
  3.     //任意字符串 生成二維碼  
  4.     //默認使用Canvas畫圖  
  5.     $('#code').qrcode('http://blog.csdn.net/u011127019');  
  6. </script>  

 

簡單實例2:編碼

  1. <div id="code"></div>  
  2. <script>  
  3.     //table 模式兼容 IE低版本  
  4.     $('#code').qrcode({  
  5.         render: 'table',  
  6.         width: 100,  
  7.         height: 100,  
  8.         text: 'http://blog.csdn.net/u011127019'  
  9.     });  

10. </script>  url

 

簡單實例3(中文支持):

咱們試驗的時候發現不能識別中文內容的二維碼,經過查找多方資料瞭解到,jquery-qrcode是採用charCodeAt()方式進行編碼轉換的。而這個方法默認會獲取它的Unicode編碼,若是有中文內容,在生成二維碼前就要把字符串轉換成UTF-8,而後再生成二維碼。

  1. <div id="code"></div>  
  2. <script>  
  3.     //若是內容中有中文,在生成二維碼錢就要把字符串轉換成utf-8  
  4.     function toUtf8(str) {  
  5.         var out, i, len, c;  
  6.         out = "";  
  7.         len = str.length;  
  8.         for (i = 0; i < len; i++) {  
  9.             c = str.charCodeAt(i);  
  10.              if ((c >= 0x0001) && (c <= 0x007F)) {  
  11.                 out += str.charAt(i);  
  12.              } else if (c > 0x07FF) {  
  13.                  out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));  
  14.                  out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));  
  15.                  out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));  
  16.              } else {  
  17.                  out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));  
  18.                  out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));  
  19.              }  
  20.          }  
  21.          return out;  
  22.      }  
  23.    
  24.      $('#code').qrcode({  
  25.          text: toUtf8('我是tianma'),  
  26.          width: 150,  
  27.          height: 150  
  28.      });  
  29.    
  30.     //就目前 微信/支付寶等 不識別其餘顏色的二維碼  
  31.      $('#code').qrcode({  
  32.          text: toUtf8('我是tianma'),  
  33.          width: 150,  
  34.          height: 150,  
  35.          background: '#f00',  
  36.          foreground: '#0f0'  
  37.      });  

38. </script>  

 

實例4:

  1. //text 屬性的值長度不能太長,最大字節數 10208  
  2. //text 字符串太長 微信/支付寶等掃一掃沒法識別,微博識別內容更多  
  3. //微博掃一掃:大約200 字之內,微信掃一掃:大約 160字之內,支付寶掃一掃:大約130字符之內  
  4. $('#code').qrcode({  
  5.     text: toUtf8('SignalR 是 ASP.NET 團隊正在開發的一個 Microsoft .NET Framework 庫和 jQuery 插件,可能包括在之後版本的 ASP.NET 平臺中。 它提供了一些前景極爲光明的功能,而這些功能正是,而且是愈來愈多的,當前未曾具備的,'),  
  6.     width: 150,  
  7.     height: 150  
  8. });  

實例5,將生成的二維碼轉換成圖片格式:

  1.   <div id="divOne"></div>  
  2.   <img id='imgOne'  style='border:1px solid red;'/>  
  3. <script>  
  4. //默認使用Canvas生成,並顯示到圖片   
  5.  var qrcode= $('#divOne').qrcode('http://www.gongjuji.net/').hide();   
  6.  var canvas=qrcode.find('canvas').get(0);  
  7.  $('#imgOne').attr('src',canvas.toDataURL('image/jpg'))  
  8. </script>  

顯示結果:

 

實例6,在當前的圖片上添加文字或logo處理:

  1. //默認使用Canvas畫圖  
  2. var qrcode = $('#code').qrcode({  
  3.     text: '@url',  
  4.     width: 400,  
  5.     height: 400  
  6. }).hide();  
  7. //添加文字  
  8. var text = "測試文字內容";//設置文字內容  
  9. var canvas = qrcode.find('canvas').get(0);  
  10. var oldCtx = canvas.getContext('2d');  
  11. var imgCanvas = document.getElementById('imgCanvas');  
  12. var ctx = imgCanvas.getContext('2d');  
  13. ctx.fillStyle = 'white';  
  14. ctx.fillRect(0,0,imgCanvas.width,imgCanvas.height);  
  15. ctx.putImageData(oldCtx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);  
  16. ctx.fillStyle = 'red';  
  17. ctx.strokStyle = 'rgb(1,1,0)';  
  18. //ctx.stroke = 3;  
  19. ctx.textBaseline = 'middle';  
  20. ctx.textAlign = 'center';  
  21. ctx.font = 'bolder 30px Helvetica';  
  22. ctx.fillText(text, imgCanvas.width / 2, imgCanvas.height - 20);  
  23. ctx.strokeText(text, imgCanvas.width / 2, imgCanvas.height - 20);  
  24. imgCanvas.style.display = 'none';  
  25. $('#imgCode').attr('src', imgCanvas.toDataURL('image/png')).css({  
  26.     maxWidth:300  
  27. });  

 

相關文章
相關標籤/搜索