使用PHP QrCode生成QR代码

Generating QR Code using PHP QrCode

在使用php qr code lib之后,我发现在使用带有脚本和对话框(jquery)的动态页面时,出于某种原因,当尝试以.png格式输出二维码时,我会得到奇怪的符号,而不是实际生成的.png文件。

以下是我的尝试:

创建了一个单独的文件,其中只包含:

1
2
3
4
5
6
<?php
//include only that one, rest required files will be included from it
include"phpqrcode/qrlib.php";

QRcode::png('barrda554');
?>

工作很棒,

尝试2:

使用jquery ui在对话框中打开的文件类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

header stuff...
include"phpqrcode/qrlib.php";
...
?>
<html>
...
  <?php
   QRcode::png('barrda554');
  ?>
..
</html>

在这次尝试中,我得到了多个奇怪的符号,原因是:

1
2
3
4
    ?PNG  IHDRWWKK/PLTE???U??~?IDAT8??? ? P# ?c??n :V?L?@?k
y??)?|F??5`?zHF|l???
%Z"e?Ы?D{\??????p`?f?eh???????k?[BJeJ?c????,?^?gu?m|Q??o??W????g?
    ?#?s?<?y??k?m??!v?.??(+?u???$s?-?n$?>?gR?`IEND?B`?

这让我很困惑,我不确定该如何解决这个问题。

告诉我你的想法,

戴维

更新:

在jquery打开的文件中放入header('Content-Type: image/png');后,不抽雪茄。

以下是实际文件:

http://jsfiddle.net/t4nep/


问题在于:

1
2
3
4
5
<html>
<?php
QRcode::png('barrda554');
?>
</html>

为了理解这是在做什么,假设您在文本编辑器中打开一个常规的PNG文件,然后直接将内容复制/粘贴到HTML文件中。它不会显示图像-就像你看到的,它只是垃圾。

要在HTML文件中包含图像,需要使用标记,并指向图像的URL。在这种情况下,图像的url将是一个php脚本,除了png内容外什么都不输出-如下所示:

1
<img src="qrcode.php">

然后在qrcode.php中生成图像:

1
2
3
4
<?php
include"phpqrcode/qrlib.php";
QRcode::png('barrda554');
?>

如果您需要HTML页面中的一些信息来生成图像,可以将其作为查询参数包含在URL中,如下所示:

1
<img src="qrcode.php?product=1&format=2">

然后在PHP中得到这些值,如下所示:

1
2
3
4
5
6
7
8
9
<?php
include"phpqrcode/qrlib.php";
$product = $_GET['product'];
$format = $_GET['format']
// ...
// whatever you need to do to generate the proper code
// ...
QRcode::png('barrda554');
?>

最后,还有一些方法可以将图像数据直接包含到HTML页面中,但并非所有浏览器都支持这种方法,因此不推荐使用这种方法,因为它会使页面大小变得更大,并阻止浏览器单独缓存图像。

您可以在这里看到关于base64数据URL的更多信息。


确保您有以下PHP代码来生成正确的Content-Type头,这样浏览器就知道如何呈现接收到的数据。

1
header("Content-Type: image/png");