使用PHP输出缓冲区捕获PNG流

时间:2014-06-24 12:16:05

标签: php stream output-buffering

我目前正在尝试编写一个为给定字符串生成QR代码的Web服务。我使用PHP QR码(http://phpqrcode.sourceforge.net/)来生成QR码,如下所示:

QRcode::png('PHP QR Code :)');

结果:屏幕上显示QR码的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();

然而,当我运行代码时,缓冲区不能像我原先计划的那样工作。无论我做什么,一旦调用该功能,就会始终显示损坏的图像。当我删除输出缓冲区代码时,屏幕上会显示QR码。

为什么我的某些输出没有被捕获?

修改:相关:phpqrcode library return image as a string

1 个答案:

答案 0 :(得分:1)

删除标题("内容类型:image / png");

让它适用于输出缓冲。

稍后你可以回复

标题("内容类型:image / png"); 以及您捕获的输出以显示图片