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 相关文章推荐
BBS(php & mysql)完整版(三)
Oct 09 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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/08/14 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
浅析Python中else语句块的使用技巧
2016/06/16 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
Python中创建二维数组
2018/10/17 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
动态密码技术
2012/10/18 面试题
简历自我评价怎么写好呢?
2014/01/04 职场文书
家长评语大全
2014/01/22 职场文书
太太口服液广告词
2014/03/20 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书