用PHPdynamic生成QR码
我正在尝试在我的网站上生成QR码。 他们所要做的就是在其中有一个URL,这是我的网站上的一个variables提供的。 最简单的方法是什么?
值得一提的是,除了@abaumg发布的QR码库之外 ,Google还提供了一个 QR码API QR Code API 非常感谢@Toukakoukan的链接更新 。
要使用这个,基本上:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
-
300x300
是您想要生成的QR图像的大小, -
chl
是要更改为QR码的url编码string -
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" />
演示:
使用PHP生成QR码最简单的方法是phpqrcode库 。
phpqrcode库的configuration非常快,API文档很容易理解。
除了abaumg的答案之外,我还在PHP
附加了2个示例http://phpqrcode.sourceforge.net/examples/index.php
1. QR码编码器
首先包括你的本地path的图书馆
include('../qrlib.php');
然后直接以PNGstream的forms输出图像,例如:
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);
2. QR码解码器
另请参见zxing解码器:
http://zxing.org/w/decode.jspx
相当有用的检查输出。
3.数据格式列表
根据数据types,您可以在QR码中使用的数据格式列表:
- 网站url: http : //stackoverflow.com (包括
http://
) - 电子邮件地址:mailto:name@example.com
- 电话号码:+16365553344(含国家代码)
- 短消息:smsto:号码:消息
- MMS消息:mms:号码:主题
- YouTubevideo:youtube:// ID(可能在iPhone上工作,不标准化)
更多数据typeshttp://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/
在Github上的qrcode-generator 。 最简单的脚本和作品像魅力。
优点:
- 没有第三方依赖
- QR代码生成次数没有限制
endroid / QrCode库易于使用,维护良好,可以使用composer php安装。 还有一个包可以直接与Symfony一起使用。
安装:
$ composer require endroid/qrcode
用法:
<?php use Endroid\QrCode\QrCode; $qrCode = new QrCode(); $qrCode ->setText('Life is too short to be generating QR codes') ->setSize(300) ->setPadding(10) ->setErrorCorrection('high') ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) ->setLabel('Scan the code') ->setLabelFontSize(16) ->setImageType(QrCode::IMAGE_TYPE_PNG) ; // now we can directly output the qrcode header('Content-Type: '.$qrCode->getContentType()); $qrCode->render(); // or create a response object $response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));
我知道的问题是如何使用PHP生成QR码,但对于正在寻找一种方法来生成网站的代码,这样做纯JavaScript的是一个很好的方法来做到这一点。 jquery-qrcode jquery插件做得很好。
我一直在使用谷歌qrcode API,但我不太喜欢这个,因为它需要我在互联网上访问生成的图像。
我做了一些命令行研究,发现linux有一个命令行工具qrencode
来生成qr-codes。
我写了这个小脚本。 好的部分是生成的图像大小小于1KB。 那么提供的数据只是一个url。
$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上的图像应用程序将安装在引擎盖下,你没有意识到。