使用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 new关键字的玄机 以及其它
Aug 25 Javascript
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
div模拟选择框示例代码
Nov 03 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
在JavaScript中使用NaN值的方法
Jun 05 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
15位和18位身份证JS校验的简单实例
Jul 18 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
Aug 02 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
javaScript产生随机数的用法小结
Apr 21 Javascript
JS中使用new Option()实现时间联动效果
Dec 10 Javascript
JS实现关闭小广告特效
Jan 29 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+mysql留言本源码
2009/11/11 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
浅谈Angular路由复用策略
2017/10/04 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
python引用DLL文件的方法
2015/05/11 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
Python 合并拼接字符串的方法
2020/07/28 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
华为python面试题
2016/05/03 面试题
2015年元旦演讲稿
2014/09/12 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL
css弧边选项卡的项目实践
2023/05/07 HTML / CSS