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
我检查了文档而没有任何帮助! :乙
答案 0 :(得分:17)
ob_start();
QRCode::png('text', null);
$imageString = base64_encode( ob_get_contents() );
ob_end_clean();
答案 1 :(得分:6)
$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函数不仅会使它发送这些头文件,而且还会退出代码执行,因此无法撤消或覆盖标题。
答案 2 :(得分:1)
我遇到了与@ iim.hlk相同的问题
这就是我对@Lusitanian稍作修改后的答案
ob_start();
QRCode::png($string);
$imageString = base64_encode( ob_get_clean() );
header('Content-Type: text/html');
这可以通过简单地覆盖它来修复标题问题。不干净或任何东西,但它的工作原理。
答案 3 :(得分:0)
这对我有用
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'"/>