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函数method_exists()与is_callable()的区别
Jun 21 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
php实现的xml操作类
Jan 15 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
php实现微信支付之退款功能
May 30 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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自动反斜杠的函数代码
2010/01/05 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
javascript document.images实例
2008/05/27 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
微信小程序实现简易table表格
2020/06/19 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Python break语句详解
2014/03/11 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python中bytes和str类型的区别
2019/10/21 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
英文版网络工程师求职信
2013/10/28 职场文书
数据管理员的自我评价分享
2013/11/15 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
廉洁自律承诺书
2014/03/27 职场文书
学习心得体会
2019/06/20 职场文书
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
使用Python开发冰球小游戏
2022/04/30 Python