使用PHP动态生成QR代码

时间:2011-05-09 22:47:54

标签: php qr-code

我正在尝试在我的网站上生成二维码。他们所要做的只是在其中包含一个URL,我的网站上的变量将提供该URL。最简单的方法是什么?

7 个答案:

答案 0 :(得分:158)

值得补充的是,除@abaumg发布的QR码库外,Google还提供了 QR Codes API QR Codes API ,感谢{ {3}}

。{3}}

要使用它,基本上:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300是您要生成的QR图片的尺寸,
  • chl是您想要更改为QR码的网址编码字符串,
  • choe是(可选)编码。

上面的链接提供了更多细节,但要使用它只是让图像的src指向被操纵的值,如下所示:

<img src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8" title="Link to Google.com" />

演示:

答案 1 :(得分:80)

使用PHP生成QR码的最简单方法是phpqrcode library

答案 2 :(得分:19)

phpqrcode库的配置速度非常快,而且API文档很容易理解。

除了abaumg的回答,我在PHP include('../qrlib.php'); 附加了2个示例

<强> 1。 QR码编码器

首先包含本地路径中的库

QRcode::png('your texte here...');

然后直接以PNG流的形式输出图像,例如:

$tempDir = EXAMPLE_TMP_SERVERPATH;

$codeContents = 'your message here...';

$fileName = 'qrcode_name.png';

$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = EXAMPLE_TMP_URLRELPATH.$fileName;

QRcode::png($codeContents, $pngAbsoluteFilePath); 

将结果保存在本地作为PNG图像:

http://

<强> 2。 QR码解码器

另请参阅 zxing 解码器:

http://phpqrcode.sourceforge.net/examples/index.php

检查输出非常有用。

第3。数据格式列表

您可以根据数据类型在QR码中使用的数据格式列表:

  • 网站网址:http://zxing.org/w/decode.jspx(包括protocole {{1}})
  • 电子邮件地址:mailto:name@example.com
  • 电话号码:+16365553344(包括国家代码)
  • 短信:smsto:number:message
  • MMS消息:mms:number:subject
  • YouTube视频:youtube:// ID(可能适用于iPhone,非标准化)

http://stackoverflow.com

上的更多数据类型

答案 3 :(得分:11)

endroid/QrCode library易于使用,维护良好,可以使用composer进行安装。还有一个bundle可以直接与Symfony一起使用。

安装:

SET FOREIGN_KEY_CHECKS = 0;

用法:

$ composer require endroid/qrcode

The generated QRCode

答案 4 :(得分:9)

Github上的

qrcode-generator。最简单的脚本,就像魅力一样。

优点:

  • 没有第三方依赖
  • QR码数量没有限制 代

答案 5 :(得分:4)

我知道问题是如何使用PHP生成QR码,但对于那些正在寻找一种方法来为纯网站中的网站生成代码的人来说,这是一个很好的方法。 jquery-qrcode jquery插件做得很好。

答案 6 :(得分:4)

我一直在使用谷歌qrcode api,但我不太喜欢这个,因为它要求我在互联网上访问生成的图像。

我做了一个小的命令行研究,发现linux有一个命令行工具qrencode来生成qr代码。

我写了这个小脚本。好的部分是生成的图像大小不到1KB。那么提供的数据只是一个网址。

$url = ($_SERVER['HTTPS'] ? "https://" : "http://").$_SERVER['HTTP_HOST'].'/profile.php?id='.$_GET['pid'];
$img = shell_exec('qrencode --output=- -m=1 '.escapeshellarg($url));

$imgData = "data:image/png;base64,".base64_encode($img);

然后在html中加载图片:

<img class="emrQRCode" src="<?=$imgData ?>" />

您只需要安装它。 [Linux上的大多数成像应用程序都会在没有你意识到的情况下安装它。