使用jquery.qrcode生成彩色二维码实例


Posted in Javascript onAugust 08, 2014

jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式。(jquery.qrcode.js 设置显示方式为table时在webkit核心浏览器如chrome下会变形,这个需要注意。)

下面为测试代码(增加了颜色控制,可以设置4个区块的颜色值,需要指定render为table。),效果如下:

使用jquery.qrcode生成彩色二维码实例

代码如下:

<html>
<head>
<title>JS生成二维码</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.qrcode.min.js"></script>
<style>
 #output{
 margin-left:300px; 
 margin-top:100px; 
 }
</style>
</head>
<body>
<div id="output"></div>
<script>
 window.onload = function () {
 var trs = $('#output').qrcode({
  width: 100,
  height: 100,
  render: "canvas", //设置渲染方式 table canvas
  text: utf16to8("javascript生成二维码"),
  background: "#ffffff", //背景颜色 
  foreground: "red" //前景颜色 
 }).find('tr'), trLen = Math.floor(trs.size() / 2), tdLen = Math.floor(trs.eq(0).find('td').size() / 2), tds, bgColor;
 var colors = [['#ff0000', '#0100e2'], ['#00ed01', '#9f4d95']];
 trs.each(function (j) {
  tds = $(this).find('td');
  tds.each(function (i) {
  bgColor = this.style.backgroundColor;
  if (bgColor == 'red') {
   this.style.backgroundColor = colors[j < trLen ? 0 : 1][i < tdLen ? 0 : 1];
  }
  });
 });
 }
 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;
 } 
</script>
 
</body>
</html>

jquery-qrcode这个库是采用 charCodeAt这个方式进行编码转换的,而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。
 
解决方式:在二维码编码前把字符串转换成UTF-8,具体代码如上utf16to8函数

PS:本站还提供了一个功能非常强大的二维码生成工具,感兴趣的朋友可以参考一下:

Javascript 相关文章推荐
JavaScript Timer实现代码
Feb 17 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
Oct 12 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
jQuery移动端图片上传组件
Jun 12 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
JS匿名函数实例分析
Nov 26 Javascript
angular 服务的单例模式(依赖注入模式下)详解
Oct 22 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
Mar 28 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
吃通javascript正则表达式
Apr 21 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 #Javascript
js调试工具console.log()方法查看js代码的执行情况
Aug 08 #Javascript
JS创建类和对象的两种不同方式
Aug 08 #Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 #Javascript
jquery datatable后台封装数据示例代码
Aug 07 #Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 #Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 #Javascript
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
php命令行用法入门实例教程
2014/10/27 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
vue实现登录拦截
2020/06/29 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python列表计数及插入实例
2014/12/17 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
Python类装饰器实现方法详解
2018/12/21 Python
详解pandas映射与数据转换
2021/01/22 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
讲座主持词
2014/03/20 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
python前后端自定义分页器
2022/04/13 Python