使用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 相关文章推荐
URL地址中的#符号使用说明
Feb 12 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
Jul 31 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
Apr 10 Javascript
从零学JS之你需要了解的几本书
May 19 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
javascript学习之json入门
Dec 22 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
详解vue组件基础
May 04 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
May 15 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
写出高质量的PHP程序
2012/02/04 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
php一个找二层目录的小东东
2012/08/02 PHP
php+mysql实现无限级分类
2015/11/11 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
Javascript - HTML的request类
2007/01/09 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
在Python中表示一个对象的方法
2019/06/25 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python实现处理mysql结果输出方式
2020/04/09 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
名人演讲稿范文
2013/12/28 职场文书
元宵节主持词
2014/03/25 职场文书
后进生评语大全
2015/01/04 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang