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
虚拟主机中对PHP的特殊设置
Oct 09 PHP
简单采集了yahoo的一些数据
Feb 14 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
将OICQ数据转成MYSQL数据
2006/10/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python实现CET查分的方法
2015/03/10 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python切图九宫格的实现方法
2019/10/10 Python
django实现用户注册实例讲解
2019/10/30 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
2014年初级职称工作总结
2014/12/08 职场文书
施工员岗位职责
2015/02/10 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
Python基础详解之描述符
2021/04/28 Python
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript