在使用PHP QrCode lib之后,我发现由于某种原因,当使用带有脚本和对话框(JQuery)的动态页面时,当尝试以.png格式输出QR码时,我会得到奇怪的符号而不是实际生成的符号.png文件。
继承了我的尝试:
使用以下内容创建了一个单独的文件:
<?php
//include only that one, rest required files will be included from it
include "phpqrcode/qrlib.php";
QRcode::png('barrda554');
?>
效果很好,
尝试2:
使用JQuery UI在对话框类型中打开文件:
<?php
header stuff...
include "phpqrcode/qrlib.php";
...
?>
<html>
...
<?php
QRcode::png('barrda554');
?>
..
</html>
在这次尝试中,我出于某种原因得到了多个时髦的符号:
�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`�
这让我很难过,我不确定如何解决这个问题。
让我知道你的想法,
大卫
更新:
将header('Content-Type: image/png');
放入JQuery打开的文件中后,没有雪茄。
这是实际文件:
答案 0 :(得分:10)
问题在于:
<html>
<?php
QRcode::png('barrda554');
?>
</html>
要了解这是做什么的,假设您在文本编辑器中打开常规PNG文件,只需将内容直接复制/粘贴到HTML文件中即可。它不会显示图像 - 它只是垃圾,就像你看到的那样。
要在HTML文件中包含图片,您需要使用<img>
标记,并指向图片的网址。在这种情况下,图像的URL将是一个PHP脚本,除了PNG内容之外什么都不输出 - 像这样:
<img src="qrcode.php">
然后在qrcode.php中生成图像:
<?php
include "phpqrcode/qrlib.php";
QRcode::png('barrda554');
?>
如果您需要HTML页面中的某些信息来生成图像,您可以将其作为查询参数包含在URL中,如下所示:
<img src="qrcode.php?product=1&format=2">
然后在PHP中获取这些值:
<?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页面中,但并不是所有浏览器都支持它,因此不建议使用,因为它会使页面大小多< / em>更大并阻止浏览器单独缓存图像。
答案 1 :(得分:0)
确保您具有以下php代码以生成正确的Content-Type
标头,以便浏览器知道如何呈现其接收的数据。
header("Content-Type: image/png");