原文地址: https://blog.csdn.net/u011127019/article/details/51226104css
1.qrcode實際上是經過使用jQuery實現圖形渲染,畫圖,支持canvas(HTML5)和table兩種方式,jquery
github源碼地址:git
https://github.com/jeromeetienne/jquery-qrcodegithub
參數說明:canvas
- render : "canvas",//設置渲染方式
- width : 256, //設置寬度
- height : 256, //設置高度
- typeNumber : -1, //計算模式
- correctLevel : QRErrorCorrectLevel.H,//糾錯等級
- background : "#ffffff",//背景顏色
- foreground : "#000000" //前景顏色
2.使用實例:微信
插件引用ide
- <script src="../Js/jquery-1.11.3.min.js"></script>
- <script src="../Js/jquery-qrcode-master/jquery.qrcode.min.js"></script>
簡單實例1:測試
- <div id="code"></div>
- <script>
- //任意字符串 生成二維碼
- //默認使用Canvas畫圖
- $('#code').qrcode('http://blog.csdn.net/u011127019');
- </script>
簡單實例2:編碼
- <div id="code"></div>
- <script>
- //table 模式兼容 IE低版本
- $('#code').qrcode({
- render: 'table',
- width: 100,
- height: 100,
- text: 'http://blog.csdn.net/u011127019'
- });
10. </script> url
簡單實例3(中文支持):
咱們試驗的時候發現不能識別中文內容的二維碼,經過查找多方資料瞭解到,jquery-qrcode是採用charCodeAt()方式進行編碼轉換的。而這個方法默認會獲取它的Unicode編碼,若是有中文內容,在生成二維碼前就要把字符串轉換成UTF-8,而後再生成二維碼。
- <div id="code"></div>
- <script>
- //若是內容中有中文,在生成二維碼錢就要把字符串轉換成utf-8
- function toUtf8(str) {
- var out, i, len, c;
- out = "";
- len = str.length;
- for (i = 0; i < len; i++) {
- c = str.charCodeAt(i);
- if ((c >= 0x0001) && (c <= 0x007F)) {
- out += str.charAt(i);
- } else if (c > 0x07FF) {
- out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
- out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
- out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
- } else {
- out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
- out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
- }
- }
- return out;
- }
-
- $('#code').qrcode({
- text: toUtf8('我是tianma'),
- width: 150,
- height: 150
- });
-
- //就目前 微信/支付寶等 不識別其餘顏色的二維碼
- $('#code').qrcode({
- text: toUtf8('我是tianma'),
- width: 150,
- height: 150,
- background: '#f00',
- foreground: '#0f0'
- });
38. </script>
實例4:
- //text 屬性的值長度不能太長,最大字節數 10208
- //text 字符串太長 微信/支付寶等掃一掃沒法識別,微博識別內容更多
- //微博掃一掃:大約200 字之內,微信掃一掃:大約 160字之內,支付寶掃一掃:大約130字符之內
- $('#code').qrcode({
- text: toUtf8('SignalR 是 ASP.NET 團隊正在開發的一個 Microsoft .NET Framework 庫和 jQuery 插件,可能包括在之後版本的 ASP.NET 平臺中。 它提供了一些前景極爲光明的功能,而這些功能正是,而且是愈來愈多的,當前未曾具備的,'),
- width: 150,
- height: 150
- });
實例5,將生成的二維碼轉換成圖片格式:
- <div id="divOne"></div>
- <img id='imgOne' style='border:1px solid red;'/>
- <script>
- //默認使用Canvas生成,並顯示到圖片
- var qrcode= $('#divOne').qrcode('http://www.gongjuji.net/').hide();
- var canvas=qrcode.find('canvas').get(0);
- $('#imgOne').attr('src',canvas.toDataURL('image/jpg'))
- </script>
顯示結果:
實例6,在當前的圖片上添加文字或logo處理:
- //默認使用Canvas畫圖
- var qrcode = $('#code').qrcode({
- text: '@url',
- width: 400,
- height: 400
- }).hide();
- //添加文字
- var text = "測試文字內容";//設置文字內容
- var canvas = qrcode.find('canvas').get(0);
- var oldCtx = canvas.getContext('2d');
- var imgCanvas = document.getElementById('imgCanvas');
- var ctx = imgCanvas.getContext('2d');
- ctx.fillStyle = 'white';
- ctx.fillRect(0,0,imgCanvas.width,imgCanvas.height);
- ctx.putImageData(oldCtx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
- ctx.fillStyle = 'red';
- ctx.strokStyle = 'rgb(1,1,0)';
- //ctx.stroke = 3;
- ctx.textBaseline = 'middle';
- ctx.textAlign = 'center';
- ctx.font = 'bolder 30px Helvetica';
- ctx.fillText(text, imgCanvas.width / 2, imgCanvas.height - 20);
- ctx.strokeText(text, imgCanvas.width / 2, imgCanvas.height - 20);
- imgCanvas.style.display = 'none';
- $('#imgCode').attr('src', imgCanvas.toDataURL('image/png')).css({
- maxWidth:300
- });