用 PHP 动态生成二维码

我想在我的网站上生成二维码。他们所要做的就是在他们有一个 URL,在我的网站上的一个变量将提供。最简单的方法是什么?

331295 次浏览

The easiest way to generate QR codes with PHP is the Phpqrcode 库.

值得一提的是,除了 @ abaumg提供的二维码库之外,Google 还提供了 二维码 API 二维码 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是要更改为二维码的 URL 编码字符串,并且
  • 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" />

Demo:

phpqrcode library配置起来非常快,API 文档也很容易理解。

除了 abaumg 的回答 之外,我还在 PHP中附上了两个例子,它们来自于 href = “ http://phpqrcode.sourceforge.net/example/index.php”rel = “ noReferrer”> http://phpqrcode.sourceforge.net/examples/index.php

1. 二维码编码器

首先包含本地路径中的库

include('../qrlib.php');

然后像 PNG 流那样直接输出图像,例如:

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

二、二维码解码器

参见 Zxing解码器:

http://zxing.org/w/decode.jspx

检查输出非常有用。

3. 数据格式表

根据数据类型,你可以在二维码中使用的数据格式列表:

  • Website URL: http://stackoverflow.com (including the protocole http://)
  • 电子邮件地址: mailto: name@example.com
  • 电话号码: + 16365553344(包括国家代码)
  • 短信: smsto: 数字: Message
  • 信息: MMS: 数字: 主题
  • YouTube 视频: YouTube://ID (可以在 iPhone 上工作,但不标准化)

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

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

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

我写了这个小剧本。好的方面是生成的图像小于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 上的大多数成像应用程序会在你没有意识到的情况下把它安装在引擎盖下。

The Android/QrCode 库 is easy to use, well maintained, and can be installed using composer. There is also a 捆绑 to use directly with 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()));

The generated QRCode