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桌面中心(一) 创建数据库
Mar 11 PHP
php 空格,换行,跳格使用说明
Dec 18 PHP
深入理解php的MySQL连接类
Jun 07 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
浅析php创建者模式
Nov 25 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP命名空间用法实例分析
Sep 04 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 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 5.0创建图形的巧妙方法
2010/10/12 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
PHP制作用户注册系统
2015/10/23 PHP
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python numpy 点数组去重的实例
2018/04/18 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
django 读取图片到页面实例
2020/03/27 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
CSS3正方体旋转示例代码
2013/08/08 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
小摄影师教学反思
2014/04/27 职场文书
水电维修专业推荐信
2014/09/06 职场文书
欢迎家长标语
2014/10/08 职场文书
护士自荐信范文
2015/03/25 职场文书
教师病假条范文
2015/08/17 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL