【发布时间】:2014-06-24 12:16:04
【问题描述】:
我目前正在尝试编写一个为给定字符串生成 QR 码的 Web 服务。我正在使用 PHP 二维码 (http://phpqrcode.sourceforge.net/) 生成二维码,如下所示:
QRcode::png('PHP QR Code :)');
结果:屏幕上显示二维码的 PNG 流。 由于这是一个直接输出到浏览器的 void 函数,这会阻止我正确返回图像。
我想用 PHP 的输出缓冲区捕获 PNG 流,并让我的 Web 服务返回这个捕获的图像。 为了测试目的,我在一个普通的 php 页面上设置了以下测试代码:
include('/vendor/phpqrcode/qrlib.php');
$scancode = "testcode";
ob_implicit_flush(false); //just in case
ob_start();
QRcode::png($scancode);
$output = ob_get_contents();
ob_end_clean();
echo "--" . $output . "--";
die();
但是,当我运行代码时,缓冲区没有按我的计划工作。无论我做什么,只要我调用该函数,就会始终显示损坏的图像。当我删除输出缓冲区代码时,二维码会呈现在屏幕上。
为什么我的一些输出没有被捕获?
【问题讨论】:
标签: php stream output-buffering