11

http://sourceforge.net/projects/phpqrcode/,是一个很棒的库,但我找不到如何将 png 图像作为字符串返回,基本示例是

QRcode::png('code data text', 'filename.png'); // creates file 
QRcode::png('some othertext 1234'); // creates code image and outputs it directly into browser

我检查了文档,什么也没有,求助!:B

4

4 回答 4

26
ob_start();
QRCode::png('text', null);
$imageString = base64_encode( ob_get_contents() );
ob_end_clean();
于 2012-07-05T20:51:51.607 回答
7
$qrTempDir = 'path/to/your/temp';
$filePath = $qrTempDir.'/'.uniqid();

QRcode::png('some text', $filePath);
$qrImage = file_get_contents($filePath);

unlink($filePath);

这应该是您正在寻找的。您可以扩展它以显示这样的图像:

<img src="data:image/png;base64,<?php echo base64_encode($qrImage) ?>" />

不幸的是,该库目前不支持任何其他方法,因为在没有 file 参数的情况下调用 QRcode::png 函数不仅会使其发送这些标头,而且还会退出代码执行,因此无法收回或覆盖标题。

于 2014-05-22T12:10:58.630 回答
2

我遇到了与@iim.hlk 相同的问题

这就是我所做的稍微修改了@Lusitanian 他对此的回答

ob_start();
QRCode::png($string);
$imageString = base64_encode( ob_get_clean() );
header('Content-Type: text/html');

这通过简单地覆盖它来解决标题问题。不干净或其他任何东西,但它可以达到目的。

于 2014-07-30T15:10:36.293 回答
2

这对我有用

include '../phpqrcode/qrlib.php';
$content = "any content";
ob_start();
QRcode::png($content);
$result_qr_content_in_png = ob_get_contents();
ob_end_clean();
// PHPQRCode change the content-type into image/png... we change it again into html
header("Content-type: text/html");
$result_qr_content_in_base64 =  base64_encode($result_qr_content_in_png);

然后在你的 html 文件中

<img src="data:image/jpeg;base64,$result_qr_content_in_base64'"/>
于 2018-10-04T14:14:58.867 回答