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 可阅读随机字符串代码
May 26 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
浅析PHP文件下载原理
Dec 25 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
PHP制作用户注册系统
Oct 23 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 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使用array_fill定义多维数组的方法
2015/03/18 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
javascript几个易错点记录
2014/11/26 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
Python新手学习函数默认参数设置
2020/06/03 Python
零基础小白多久能学会python
2020/06/22 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python unichr函数知识点总结
2020/12/16 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
大学毕业生个人自荐信范文
2014/01/08 职场文书
给国外客户的邀请函
2014/01/30 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书