使用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 相关文章推荐
jQuery 判断页面元素是否存在的代码
Aug 14 Javascript
分析Node.js connect ECONNREFUSED错误
Apr 09 Javascript
3种不同方式的焦点图轮播特效分享
Oct 30 Javascript
js Array操作的最简短最容易理解方法
Dec 09 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
Angular表单验证实例详解
Oct 20 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
Mar 10 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
详解小程序云开发攻略(解决最棘手的问题)
Sep 30 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
PHP新手上路(四)
2006/10/09 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
require.js中的define函数详解
2017/07/10 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python 面向对象部分知识点小结
2020/03/09 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
师范学院教师自荐书
2014/01/31 职场文书
法制宣传日活动总结
2014/04/29 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
python中urllib包的网络请求教程
2022/04/19 Python