有个大坑:在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生成二维码不保存服务器还有下载功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Android 点击生成二维码功能实现代码,包括了Android 点击生成二维码功能实现代码的使用技巧和注意事项,需要的朋友参考一下 先看效果: 输入内容,点击生成二维码: 点击logo图案: 代码: QRCodeUtil: MainActivity: 布局: activity_main: 总结 以上所述是小编给大家介绍的Android 点击生成二维码功能实现代码,希望对大家有所帮
本文向大家介绍Android 二维码扫描和生成二维码功能,包括了Android 二维码扫描和生成二维码功能的使用技巧和注意事项,需要的朋友参考一下 在APP开发中,常遇到二维码扫描功能和生成二维码的需求。Android大部分是集成了zxing这个开源项目的扫码功能。 开源项目地址 下面给大家介绍一下具体的集成步骤 集成步骤 参考demo 1.demo展示如下: 1.1demo首页 1.2扫描界
本文向大家介绍Java实现二维码生成的代码方法,包括了Java实现二维码生成的代码方法的使用技巧和注意事项,需要的朋友参考一下 1、支持QRcode、ZXing 二维码生成、解析; 2、QRCode 方式生成二维码支持添加图片,如下:
本文向大家介绍11行JS代码制作二维码生成功能,包括了11行JS代码制作二维码生成功能的使用技巧和注意事项,需要的朋友参考一下 HTML代码: 相关JS代码: 再给大家分享一下其他生成二维码的案例: 使用jquery.qrcode生成二维码 1、首先在页面中加入jquery库文件和qrcode插件 2、在页面中需要显示二维码的地方加入以下代码: 3、调用qrcode插件。支持canvas和tabl
本文向大家介绍Android生成条形码和二维码功能,包括了Android生成条形码和二维码功能的使用技巧和注意事项,需要的朋友参考一下 背景: 随着移动互联网的普及以及智能终端设备的广泛应用,移动支付变得越来越便捷,通过扫描二维码代替传统的刷卡行为。那么作为开发者而言生成二维码成为了一项必备技能。 准备: 使用zxing包 implementatio
本文向大家介绍iOS二维码的生成代码,包括了iOS二维码的生成代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS二维码的生成代码,供大家参考,具体内容如下 一、工程图。 二、代码。 ViewController.m 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Android 二维码 生成和识别二维码 附源码下载,包括了Android 二维码 生成和识别二维码 附源码下载的使用技巧和注意事项,需要的朋友参考一下 今天讲一下目前移动领域很常用的技术——二维码。现在大街小巷、各大网站都有二维码的踪迹,不管是IOS、Android、WP都有相关支持的软件。之前我就想了解二维码是如何工作,最近因为工作需要使用相关技术,所以做了初步了解。今天主要
本文向大家介绍iOS实现二维码的扫描功能,包括了iOS实现二维码的扫描功能的使用技巧和注意事项,需要的朋友参考一下 直接上代码,就不多废话了