使用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 相关文章推荐
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
Jun 08 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 Javascript
vue的diff算法知识点总结
Mar 29 Javascript
简单的三步vuex入门
May 20 Javascript
JavaScript实现随机五位数验证码
Sep 27 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
对python 自定义协议的方法详解
2019/02/13 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
成品库仓管员岗位职责
2014/04/06 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
会计入职心得体会
2016/01/22 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python