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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
通过html表格发电子邮件
Oct 09 PHP
Cakephp 执行主要流程
Mar 24 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
PHP实现货币换算的方法
Nov 29 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 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的控制语句
2006/10/09 PHP
基于mysql的bbs设计(二)
2006/10/09 PHP
php Session无效分析资料整理
2016/11/29 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python 硬币兑换问题
2019/07/29 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
商场端午节活动方案
2014/01/29 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书