使用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应用于login页面的问题及解决
Oct 17 Javascript
Javascript 面向对象 重载
May 13 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
Sep 12 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
js实现仿qq消息的弹出窗效果
Jan 06 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
认识less和webstrom的less配置方法
Aug 02 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
vue瀑布流组件实现上拉加载更多
Mar 10 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
JavaScript字符串对象
2017/01/14 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
Python高级property属性用法实例分析
2019/11/19 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
介绍一下内联、左联、右联
2013/12/31 面试题
工程班组长岗位职责
2013/12/30 职场文书
运动会通讯稿200字
2014/02/16 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
李开复演讲稿
2014/05/24 职场文书
质量提升方案
2014/06/16 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
八年级英语教学计划
2015/01/23 职场文书
Redis入门教程详解
2021/08/30 Redis
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL