使用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 相关文章推荐
JavaScript中Array 对象相关的几个方法
Dec 22 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 Javascript
全面理解闭包机制
Jul 11 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
vue 检测用户上传图片宽高的方法
Feb 06 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
Smarty分页实现方法完整实例
2016/05/11 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
浅析Python中的join()方法的使用
2015/05/19 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python设置随机种子实例讲解
2019/09/12 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
实习生体会的自我评价范文
2013/11/28 职场文书
表扬信格式
2014/01/12 职场文书
会计辞职信范文
2014/01/15 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技