用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())); 

生成的QRCode

我知道的问题是如何使用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上的图像应用程序将安装在引擎盖下,你没有意识到。