使用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 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
jQuery生成asp.net服务器控件的代码
Feb 04 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
js创建子窗口并且回传值示例代码
Jul 02 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
引用其它js时如何同时处理多个window.onload事件
Sep 02 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
使用node.js搭建服务器
May 20 Javascript
js实现飞机大战游戏
Aug 26 Javascript
JavaScript实现鼠标经过表格某行时此行变色
Nov 20 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
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 curl 上传文件代码实例
2015/04/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
javascript时区函数介绍
2012/09/14 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
实习求职信
2013/12/01 职场文书
cf战队收人广告词
2014/03/14 职场文书
2015年元旦活动总结
2014/05/09 职场文书
教务处干事工作总结
2015/08/14 职场文书
四年级语文教学反思
2016/03/03 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Mysql 性能监控及调优
2021/04/06 MySQL
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server