使用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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
javascript动态加载二
Aug 22 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
es6学习笔记之Async函数的使用示例
May 11 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
微信小程序中button去除默认的边框实例代码
Aug 01 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高级对象构建 多个构造函数的使用
2012/02/05 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
JPype实现在python中调用JAVA的实例
2017/07/19 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
如何使用Pytorch搭建模型
2020/10/26 Python
Python 使用office365邮箱的示例
2020/10/29 Python
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
大学生自荐书范文
2013/12/10 职场文书
运动会入场解说词300字
2014/01/25 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
关爱留守儿童标语
2014/06/18 职场文书
丧事答谢词
2015/01/05 职场文书
北京英语导游词
2015/02/12 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Python字符串的转义字符
2022/04/07 Python