使用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 面向对象编程  function是方法(函数)
Sep 17 Javascript
页面中iframe相互传值传参
Dec 13 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
浅谈js的setInterval事件
Dec 05 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
bootstrap table小案例
Oct 21 Javascript
值得分享和收藏的xmlplus组件学习教程
May 05 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 Javascript
vue print.js打印支持Echarts图表操作
Nov 13 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
PHP+JQUERY操作JSON实例
2017/03/23 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python人人网登录应用实例
2014/09/26 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
浅谈python迭代器
2017/11/08 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
学习Django知识点分享
2019/09/11 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
好人好事新闻稿
2015/07/17 职场文书
初中政治教学工作总结
2015/08/13 职场文书
2016新年问候语大全
2015/11/11 职场文书
详细总结Python常见的安全问题
2021/05/21 Python