使用jQuery.Qrcode外掛在客戶端動態生成二維碼並新增自定義Logo

使用jQuery.Qrcode外掛在客戶端動態生成二維碼並新增自定義Logo

0 Jquery.Qrcode簡介

Jquery.Qrcode.js是一個在瀏覽器端基於Jquery動態生成二維碼的外掛,支援Canvas和Table兩種渲染方式,它的優點是在客戶端動態生成,減輕了服務端壓力,尤其是在大量使用二維碼的系統中。Jquery.Qrcode主要包括以下引數設定:

•render 定義二維碼的渲染方式,有table和canvas兩種渲染方式

•width 定義二維碼的寬度

•height 定義二維碼的高度

•text 定義二維碼內容

•typeNumber 二維碼的計算模式 一般預設為-1

•correctLevel 二維碼的糾錯級別

•background 定義二維碼的背景顏色

•foreground 定義二維碼的前景色

1 Jquery.Qrcode基本使用

1.0 新增相關引用

Jquery.Qrcode僅僅依賴於Jquery,所以我們只需要新增Jquery及Jquery.Qrcode的引用即可。


<script src="~/Content/js/jquery-2.1.4.min.js"></script>
<script src="~/Content/js/jquery.qrcode.min.js"></script>

1.1 新增渲染區域元素

Jquery.Qrcode使用div元素作為渲染的目標區域,在頁面上新增一個div標籤。


<div id="qrCodeDiv">
</div>

1.2 二維碼生成


$("#qrCodeDiv").qrcode({
render: "canvas", // 渲染方式有table方式(IE相容)和canvas方式
width: 260, //寬度
height: 260, //高度
text: "www.baidu.com", //內容
typeNumber: -1,//計算模式
correctLevel: 2,//二維碼糾錯級別
background: "#ffffff",//背景顏色
foreground: "#000000" //二維碼顏色
});

二維碼生成如下

2 Jquery.Qrcode對中文字元的支援

預設的Jquery.Qrcode是不支援中文編碼的,上面我們如果將text的內容設定為中文字串,生成二維碼並掃描後會發現結果是亂碼。這是因為jquery.qrcode採用 charCodeAt() 方式進行編碼轉換,預設採用UTF-8方式編碼,而針對中文一般情況下是採用UTF-16編碼實現,這樣就會導致亂碼的出現,解決方案就是在二維碼編碼前,將二維碼的內容字串轉換成UTF-8格式,js轉換方法如下。


function utf16to8(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;
};

生成二維碼時,將轉碼後的結果作為text的值即可


$("#qrCodeDiv").qrcode({
render: "canvas", // 渲染方式有table方式(IE相容)和canvas方式
width: 260, //寬度
height: 260, //高度
text: utf16to8("漢字內容的二維碼"), //內容
typeNumber: -1,//計算模式
correctLevel: 2,//二維碼糾錯級別
background: "#ffffff",//背景顏色
foreground: "#000000" //二維碼顏色
});

3 Jquery.Qrcode新增自定義Logo圖片

給二維碼新增一個自定義的logo,會讓你的二維碼看上去更專業,預設的Jquery.Qrcode是不支援新增自定義Logo的,這裡比較簡單的實現方案就是,針對每個二維碼新增一個img標籤,讓img在二維碼區域相對居中顯示即可。


<img id="qrCodeIco" src="~/images/logo.png" style="position: absolute;width: 30px; height: 30px;" />

控制img標籤的位置


var margin = ($("#qrCodeDiv").height() - $("#qrCodeIco").height()) / 2; //控制Logo圖示的位置
$("#qrCodeIco").css("margin", margin);

最終結果如下

Jquery.Qrcode下載

以上所述是小編給大家介紹的使用jQuery.Qrcode外掛在客戶端動態生成二維碼並新增自定義Logo,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對指令碼之家網站的支援!

您可能感興趣的文章:

jQuery實現動態新增tr到table的方法使用jquery給指定的table動態新增一行、刪除一行JQuery動態新增Select的Option元素實現方法jQuery為動態生成的select元素新增事件的方法jQuery實現表格行和列的動態新增與刪除方法【測試可用】jQuery動態新增.active 實現導航效果程式碼思路詳解