使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo


Posted in Javascript onSeptember 01, 2016

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" //二维码颜色
});

二维码生成如下

使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo

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插件在客户端动态生成二维码并添加自定义Logo

以上所述是小编给大家介绍的使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
神奇的7个jQuery 3D插件整理
Jan 06 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
js文字横向滚动特效
Nov 11 Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
vue如何获取点击事件源的方法
Aug 10 Javascript
Vue动态创建注册component的实例代码
Jun 14 Javascript
async/await让异步操作同步执行的方法详解
Nov 01 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
Sep 01 #Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 #Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 #Javascript
javaScript如何跳出多重循环break、continue
Sep 01 #Javascript
AngularJs bootstrap详解及示例代码
Sep 01 #Javascript
JavaScript数据类型学习笔记分享
Sep 01 #Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 #Javascript
You might like
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php设置编码格式的方法
2013/03/05 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python保存字符串到文件的方法
2015/07/01 Python
Python变量和数据类型详解
2017/02/15 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
python调用私有属性的方法总结
2020/07/24 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2015年药房工作总结
2015/04/25 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书