经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JSJS库框架 » JavaScript » 查看文章
QRCode.js二维码生成并能长按识别
来源:jb51  时间:2018/10/17 8:45:28  对本文有异议

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

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

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

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

话不多说,直接上干货:

html部分:

  1. <div id="codeBox">
  2. <div id="qrDiv" style="display: none;"></div>
  3. <div id="qrcode"></div>
  4. </div>

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

  1. var user_id="" //用户ID
  2. user_id=getQueryString('user_id'); //获取user_id参数
  3. var url= '' //请求url
  4. $(function(){
  5. //生成二维码
  6. var downUrl=url+user_id;
  7. var qrcode = new QRCode("qrDiv", {
  8. text: utf16to8(Url),
  9. render: "canvas", //渲染方式有table方式(IE兼容)和canvas方式
  10. width: 128,
  11. height: 128,
  12. typeNumber:-1,//计算模式
  13. colorDark : "#000000", //前景色
  14. colorLight : "#ffffff", //背景色
  15. correctLevel : QRCode.CorrectLevel.H //容错级别
  16. });
  17. var mycanvas1=document.getElementsByTagName('canvas')[0];
  18. //将转换后的img标签插入到html中
  19. var img=convertCanvasToImage(mycanvas1);
  20. $('#qrcode').append(img);//imagQrDiv表示你要插入的容器id
  21. })
  22.  
  23. //从 canvas 提取图片 image
  24. function convertCanvasToImage(canvas) {
  25. //新Image对象,可以理解为DOM
  26. var image = new Image();
  27. // canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持
  28. // 指定格式 PNG
  29. image.src = canvas.toDataURL("image/png");
  30. return image;
  31. }
  32.  
  33. //获取请求参数值
  34. function getQueryString(name) {
  35. var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  36. var r = window.location.search.substr(1).match(reg);
  37. if (r != null) {
  38. return unescape(r[2]);
  39. }
  40. return null;
  41. }
  42.  
  43. //中文编码格式转换
  44. function utf16to8(str) {
  45. var out, i, len, c;
  46. out = "";
  47. len = str.length;
  48. for (i = 0; i < len; i++) {
  49. c = str.charCodeAt(i);
  50. if ((c >= 0x0001) && (c <= 0x007F)) {
  51. out += str.charAt(i);
  52. } else if (c > 0x07FF) {
  53. out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
  54. out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
  55. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  56. } else {
  57. out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
  58. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  59. }
  60. }
  61. return out;
  62. }
  63.  
  64.  

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号