一、背景

需求是需要在后台点击生成二维码,然后这个二维码不上传到服务器。我们需要把二维码返回给前台页面,并且显示出来。

二、实现过程

1、生成二维码

这里使用的是qrcode这个第三方。网上百度,教程一大堆,这里我就不细说了。这边使用的是tp3.2.3框架。

//引入第三方Vendor('phpqrcode.phpqrcode');$errorCorrectionLevel =intval($level) ;//容错级别$matrixPointSize = intval($size);//生成图片大小
//实例化qrcode方法$object = new \QRcode();//生成二维码。第二个参数是false,代表不保存路径$object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);

2、把二维码路径返回给前端。

这里需要明确,png()方法返回的是二进制的图片流。所以直接返回是没用的。如果打印返回值的话,我们会发现,返回值是null。所以这里,采用ob_start(),利用缓冲区进行一系列的操作

$object = new \QRcode();//打开缓冲区ob_start();$object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);//这里就是把生成的图片流从缓冲区保存到内存对象上,使用base64_encode变成编码字符串,通过json返回给页面。$imageString = base64_encode(ob_get_contents());//关闭缓冲区ob_end_clean();//把生成的base64字符串返回给前端$data = array('code'=>200,'data'=>$imageString);$this->ajaxReturn($data);

关于缓冲区,大家可以参考这个博客:
http://blog.csdn.net/ljfphp/article/details/78839654

我们这里把字符串返回给前端。

3、前端处理字符串,并且显示出二维码

  success: function(r) {if (r.code==200) {//console.log(r);var path = 'data:image/png;base64,'+r.data;//给img的sec赋值。$("#qrcode").attr('src',path);} else {alert(r.err);}

1)以上是ajax的success方法。当成功返回之后,我们需要给img的src赋值
2)但是由于是base64字符串,所以我们需要解析这个字符串。这里是给img的src赋值为:

<img src="data:image/png;base64,这里是base64编码内容" />
//也就是咱们上面代码的
'data:image/png;base64,'+r.data;
//r.data就是返回的字符串

4、浏览器上显示二维码

如图,当点击按钮的时候,进行ajax请求。完成请求后,给img的src属性赋值。成功显示出二维码图片。(PS:页面有点丑,不要见怪)

老了老了,熬不住了。晚安,各位。

end

参考链接:
https://www.jianshu.com/p/768e72938237

php生成二维码并返回给前端页面显示相关推荐

  1. phpqrcode生成二维码直接返回前端展示

    ajax生成二维码并返回给前端页面显示 需求 phpqrcode生成二维码直接返回前端展示(不进行服务器上传存储) 过程 1,ajax请求返回到前端页面展示 <div class="m ...

  2. java生成二维码,并在前端展示。

    java生成二维码,并在前端展示,扫码实现下载功能. 后端生成二维码以流的形式 前端接收二维码并展示 后端生成二维码以流的形式 这是以流的形式展示二维码.当然也可以以文件的格式,文件格式就是Path ...

  3. java后台获取微信分享二维码 并返回给前端

    最近公司业务需求 微信小程序需要分享 从后台请求生成二维码图片 并显示 给大家分享一下 经验 第一步 :获得 微信token(这个token两个小时会过期 所以需要token生成相对应的二维码) St ...

  4. php联图生成二维码浏览器扫可以到页面,但是QQ或微信扫直接显示链接

    $_SERVER['SERVER_NAME'] 如果用这个获取当前运行脚本所在服务器的主机名.如果脚本运行于虚拟主机中,该名称就由那个虚拟主机所设置的值决定.如果你是用改方法获取的不可以,只有把域名写 ...

  5. php endroid/qr-cod 高版本 生成二维码

    目前使用的endroid/qr-cod版本为:4.5 1:生成二维码直接返回给前端 /*** 生成二维码图片:url会直接跳转(url必须带有http,否则不会跳转:其他情况会生成带有参数的二维码)* ...

  6. Java生成二维码并以IO流的形式返回给前端展示(不需写入服务器),以及下载二维码图片

    目录 场景 方案分析 第一步--引入依赖 第二步--编写工具类 第三步--编写API接口 第四步--访问测试 第五步--下载图片 场景 最近笔者做的项目中,有一个需求: 在系统中生成一个二维码,用户保 ...

  7. java后台生成二维码以及页面显示二维码方式

    上篇文章已经说明并发布了后台生成二维码工具类,大家可以直接去看或者去拿. 地址:最简单实用的java生成二维码工具 现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码, ...

  8. 前端生成二维码与图片合成

    首先前端生成二维码 使用插件完成,插件为DrawQRCode.unitypackage  合成二维码直接使用DrawQRCode 类里提供的方法即可 生成二维码的方法 DrawCode_Color32 ...

  9. 发票二维码含义, 及java生成二维码

    目录 发票二维码的含义 二维码 扫描结果 结果解析 样例 增值税电子普通发票: 增值税专用发票: 增值税普通发票: JAVA生成发票二维码 引入依赖 字符串二维码或二维码读取 二维码测试 生成样例 发 ...

最新文章

  1. jmeter连接MySQL出错_MySQL数据库之jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory...
  2. Hibernate模拟试题
  3. 146. LRU缓存机制
  4. 高中计算机教师招聘试题,中小学信息技术教师招聘考试真题及答案.doc
  5. 规模化敏捷框架何从入手?这篇文章把SAFe讲透了!
  6. java面试算法总结_java编程面试过程中常见的10大算法概念汇总
  7. bzu-java(五)
  8. Django DEBUG=False
  9. MySQL5.7导出数据表
  10. 苹果手机读取html文件,教你如何解决“iTunes不能读取iPhone内容”的问题
  11. JPEG图像的可逆信息隐藏算法研究
  12. SD卡无法格式化的原因分析
  13. 我进滑雪场前做的功课
  14. 银行mysql面试题_mysql的常见面试题
  15. UVALive 4670 Dominating Patterns(AC自动机)
  16. 【Unity3D】个人开发台球小游戏
  17. [BJOI2019] 排兵布阵
  18. shiro集成springboot的脚手架
  19. Vue + 高德地图 + 三维模型
  20. 安利一个在线画UML图的网址

热门文章

  1. 自考进行时--2018.10.21
  2. 帝国cms7.5百度小程序针对搜索引擎自然搜索优化版生成静态版
  3. 帝国Cms虚拟主机突破上传最大文件2m的限制的方法
  4. module ‘imgaug.augmenters‘ has no attribute ‘Resize‘
  5. 姿态迁移CoCosNet v2
  6. pytorch 卷积分组
  7. pandas获取数据行号,删除行数据
  8. android EditText显示不全
  9. Can't pickle local object 'CDLL.__init__.locals._FuncPtr'
  10. python显示图片