使用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代码优化之基本事件
Nov 01 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
Sep 01 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
jQuery实现下拉框功能实例代码
May 06 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
JavaScript 闭包的使用场景
Sep 17 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 Global定义全局变量使用说明
2013/08/15 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
python实现的jpg格式图片修复代码
2015/04/21 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
对Python _取log的几种方式小结
2019/07/25 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
django中的数据库迁移的实现
2020/03/16 Python
python如何使用腾讯云发送短信
2020/09/17 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
护理自我鉴定范文
2013/10/06 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
房屋转让协议书范本
2014/04/11 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
水电施工员岗位职责
2015/04/11 职场文书
管理失职检讨书
2015/05/05 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
vue特效之翻牌动画
2022/04/20 Vue.js
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android