使用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一些不错的函数脚本代码
Sep 10 Javascript
json数据的列循环示例
Sep 06 Javascript
js函数名与form表单元素同名冲突的问题
Mar 07 Javascript
Javascript 跨域知识详细介绍
Oct 30 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
ES7中利用Await减少回调嵌套的方法详解
Nov 01 Javascript
three.js实现3D影院的原理的代码分析
Dec 18 Javascript
vue.js中npm安装教程图解
Apr 10 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
详解vue 2.6 中 slot 的新用法
Jul 09 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
兼容最新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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
开启PHP的伪静态模式
2015/12/31 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
js活用事件触发对象动作
2008/08/10 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python生成随机图形验证码详解
2017/11/08 Python
python实现报表自动化详解
2017/11/16 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python实现购物车购物小程序
2018/04/18 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
2015年信息宣传工作总结
2015/05/26 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书