php生成二维码不保存服务器还有下载功能的实现代码


Posted in PHP onAugust 09, 2018

有个大坑:在phpqrcode类里QRimage::png会重新定义header为header('content-type : img/png')

此header头解析不了html代码,所以在返回完后直接是一张二维码别的代码起不了任何作用,所以要返回完之后再重新声明一下header为header('Content-Type:text/html;charset=utf-8');,我在下边代码中声名过了,标红的就是

1.引入phpqrcode类(php操作二维码类)

2.调用encodePNG方法

3.修改encodePNG方法( 加入ob缓存,返回)base64加密后的图片流

4.将加密后的图片流返回给前端

5.前端通过img标签输出

6.下载功能:超链接直接加上 download="图片名称"

调用phpqrcode代码如下

/**
 * 活动二维码生成
 * @param $text 参数$text表示生成二位的的信息文本;
 * @param $outfile 参数$outfile表示是否输出二维码图片 文件,默认否;
 * @param string $level 参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%);
 * @param int $size 参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;
 * @param int $margin
 * @param bool $saveandprint 参数$saveandprint表示是否保存二维码并显示。
 */
include_once(ROOT_PATH . '/protected/components/phpqrcode.php');
$link = LinkUrlHelper::getUrl(Yii::app()->user->eid,'ACTIVE_DETAIL',$id);
$h5Url = $link['h5'];
$baseImg = QRimage::encodePNG($h5Url,false);
$this->renderPartial('training_code',['img'=>$baseImg]);

修改后的encodePNG方法

public function encodePNG($intext, $outfile = false,$saveandprint=false) 
{
  try {
    ob_start();
    $tab = $this->encode($intext);
    $err = ob_get_contents();
    ob_end_clean();
    if ($err != '')
      QRtools::log($outfile, $err);
    $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
    ob_start();//开启ob缓存
    QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint);
    $imageString = base64_encode(ob_get_contents());//将图片流存入缓存并加密赋值给变量
    ob_end_clean();//清楚ob缓存
    header('Content-Type:text/html;charset=utf-8');// QRimage::png 会覆盖此header头,所以要重新声明一下,否则解析不了html代码。
    return "data:image/png;base64,".$imageString;//返回拼接好的串
  } catch (Exception $e) {
    QRtools::log($outfile, $e->getMessage());
  }
}

总结

以上所述是小编给大家介绍的php生成二维码不保存服务器还有下载功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
十天学会php之第六天
Oct 09 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
php实现可逆加密的方法
Aug 11 PHP
Yii2框架使用计划任务的方法
May 25 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 PHP
PHP架构及原理知识点详解
Dec 22 PHP
PHP命令Command模式用法实例分析
Aug 08 #PHP
PHP耦合设计模式实例分析
Aug 08 #PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 #PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 #PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 #PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 #PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 #PHP
You might like
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
基于Vue中的父子传值问题解决
2020/07/27 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python比较两个列表大小的方法
2015/07/11 Python
python操作 hbase 数据的方法
2016/12/18 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
What is view? why do we have view?
2012/06/22 面试题
大学生素质拓展活动方案
2014/02/11 职场文书
班主任新年寄语
2014/04/04 职场文书
影视后期实训报告
2014/11/05 职场文书
公司庆典主持词
2015/07/04 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS