在使用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');
?>
Run Code Online (Sandbox Code Playgroud)
效果很好,
尝试2:
使用JQuery UI在对话框类型中打开文件:
<?php
header stuff...
include "phpqrcode/qrlib.php";
...
?>
<html>
...
<?php
QRcode::png('barrda554');
?>
..
</html>
Run Code Online (Sandbox Code Playgroud)
在这次尝试中,我出于某种原因得到了多个时髦的符号:
?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`?
Run Code Online (Sandbox Code Playgroud)
这让我很难过,我不确定如何解决这个问题.
让我知道你的想法,
大卫
更新:
放入header('Content-Type: image/png');JQuery打开的文件后,没有雪茄.
这是实际文件:
jcs*_*nyi 10
问题出在这里:
<html>
<?php
QRcode::png('barrda554');
?>
</html>
Run Code Online (Sandbox Code Playgroud)
要了解这是做什么的,假设您在文本编辑器中打开常规PNG文件,并将内容直接复制/粘贴到HTML文件中.它不会显示图像 - 它只是垃圾,就像你看到的那样.
要在HTML文件中包含图像,您需要使用<img>标记,并指向图像的URL.在这种情况下,图像的URL将是一个PHP脚本,除了PNG内容之外什么都不输出 - 像这样:
<img src="qrcode.php">
Run Code Online (Sandbox Code Playgroud)
然后在qrcode.php中,生成图像:
<?php
include "phpqrcode/qrlib.php";
QRcode::png('barrda554');
?>
Run Code Online (Sandbox Code Playgroud)
如果您需要HTML页面中的某些信息来生成图像,您可以将其作为查询参数包含在URL中,如下所示:
<img src="qrcode.php?product=1&format=2">
Run Code Online (Sandbox Code Playgroud)
然后在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');
?>
Run Code Online (Sandbox Code Playgroud)
最后-有有办法的图像数据包括直接进入HTML页面,但它不是所有的浏览器都支持,并且不推荐,因为它使页面大小多少大,阻止浏览器能够单独缓存图像.
您可以在此处和此处查看有关base64数据URL的更多信息.
| 归档时间: |
|
| 查看次数: |
7530 次 |
| 最近记录: |