QRCode.js二维码生成并能长按识别


Posted in Javascript onOctober 16, 2018

QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。

首先引入QRCode.js文件,下载地址

如果生成二维码的信息是固定不变的,那么当然不需要如此这般,网上有好多现成的二维码生成器,直接用就好。

可是,我的需求是这样的,二维码用于在微信或QQ中分享,根据不同的用户信息分别生成不同的二维码,这样就不能偷懒,就得用代码生成了,并且生成的二维码支持长按识别进入。

话不多说,直接上干货:

html部分:

<div id="codeBox">
 <div id="qrDiv" style="display: none;"></div>
 <div id="qrcode"></div> 
</div>

js部分:实例化并进行参数设置:

var user_id="" //用户ID
user_id=getQueryString('user_id'); //获取user_id参数
var url= '' //请求url
  $(function(){
  //生成二维码
  var downUrl=url+user_id;
  var qrcode = new QRCode("qrDiv", {
    text: utf16to8(Url),
    render: "canvas", //渲染方式有table方式(IE兼容)和canvas方式
    width: 128,
    height: 128,
    typeNumber:-1,//计算模式
    colorDark : "#000000",   //前景色
    colorLight : "#ffffff",   //背景色
    correctLevel : QRCode.CorrectLevel.H   //容错级别
  });
  var mycanvas1=document.getElementsByTagName('canvas')[0];
  //将转换后的img标签插入到html中 
  var img=convertCanvasToImage(mycanvas1); 
   $('#qrcode').append(img);//imagQrDiv表示你要插入的容器id    
  })

  //从 canvas 提取图片 image 
  function convertCanvasToImage(canvas) { 
  //新Image对象,可以理解为DOM 
  var image = new Image(); 
  // canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持 
    // 指定格式 PNG 
  image.src = canvas.toDataURL("image/png"); 
    return image; 
  } 

  //获取请求参数值
  function getQueryString(name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  var r = window.location.search.substr(1).match(reg);
  if (r != null) {
    return unescape(r[2]);
  }
  return null; 
   }

  //中文编码格式转换
  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;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
常用jQuery代码分享
Jul 14 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
Mar 21 Javascript
详解Vue自定义过滤器的实现
Jan 10 Javascript
详解js的异步编程技术的方法
Feb 09 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
react-native之ART绘图方法详解
Aug 08 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 #Javascript
JavaScript实现表单注册、表单验证、运算符功能
Oct 15 #Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 #Javascript
jQuery轻量级表单模型验证插件
Oct 15 #jQuery
详解ESLint在Vue中的使用小结
Oct 15 #Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 #Javascript
javascript匿名函数中的'return function()'作用
Oct 15 #Javascript
You might like
PHP框架性能测试报告
2016/05/08 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
基于Pytorch SSD模型分析
2020/02/18 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
旅游管理本科生求职信
2013/10/14 职场文书
房地产销售大学生自我评价分享
2013/11/11 职场文书
致全体运动员广播稿
2014/02/01 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
会议新闻稿
2015/07/17 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技