我目前正在尝试编写一个web服务,为给定字符串生成QR码。我使用PHP QR码(http://phpqrcode.sourceforge.net/)来生成QR码,如下所示:
QRcode::png('PHP QR Code :)');
结果:屏幕上显示二维码的PNG流。由于这是一个直接输出到浏览器的空函数,这使我无法正确返回图像。
我想用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码。
为什么我的一些输出没有被捕获?
编辑:related: phpqrcode库返回图像作为字符串
删除头("内容类型:图像/png");
使用输出缓冲。
之后可以回显
header("content-type:image/png");和您捕获的输出显示图像