使用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 相关文章推荐
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
javascript读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
浅谈Node.js中的定时器
Jun 18 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
Feb 27 Javascript
javascript中的try catch异常捕获机制用法分析
Dec 14 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
详解mpvue开发小程序小总结
Jul 25 Javascript
vue实现跳转接口push 转场动画示例
Nov 01 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 Javascript
用VsCode编辑TypeScript的实现方法
May 07 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中的curl使用入门教程和常见用法实例
2014/04/10 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
大学毕业后的十年规划
2014/01/07 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
小学教师师德整改措施
2014/09/29 职场文书
安全生产先进个人总结
2015/02/15 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python