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 相关文章推荐
example1.php
Oct 09 PHP
第1次亲密接触PHP5(2)
Oct 09 PHP
小偷PHP+Html+缓存
Nov 25 PHP
php zip文件解压类代码
Dec 02 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
php curl_init函数用法
Jan 31 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
php生成与读取excel文件
Oct 14 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
深入理解vue中的$set
2017/06/01 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
企业车辆管理制度
2014/01/24 职场文书
交通事故调解协议书
2014/04/16 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
中学社团活动总结
2015/05/07 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL