使用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 相关文章推荐
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
jQuery css() 方法动态修改CSS属性
Sep 25 Javascript
在使用JSON格式处理数据时应该注意的问题小结
May 20 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
Angular ElementRef简介及其使用
Oct 01 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扩展函数
2006/10/09 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
php echo 输出字符串函数详解
2010/05/13 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
简历中自我评价分享
2013/10/09 职场文书
初中科学教学反思
2014/01/21 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
土地转让协议书
2014/04/15 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js