使用PHP动态生成QR码[已关闭]

toe95027  于 2023-04-04  发布在  PHP
关注(0)|答案(7)|浏览(143)

**已关闭。**此问题正在寻求有关书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。当前不接受答案。

我们不允许问题寻求有关书籍、工具、软件库等的推荐。你可以编辑问题,以便可以使用事实和引用来回答问题。
5年前关闭。
Improve this question
我正在尝试在我的网站上生成QR码。他们所要做的就是在其中包含一个URL,我的网站上的一个变量将提供该URL。最简单的方法是什么?

8ljdwjyq

8ljdwjyq1#

值得补充的是,除了@abaumg发布的QR码库外,Google还提供了一个QR Codes APIQR Codes 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编码字符串,并且
  • 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" />

演示:

2ic8powd

2ic8powd2#

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

biswetbf

biswetbf3#

endroid/QrCode library易于使用,维护良好,可以使用composer安装。还有一个bundle可以直接与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()));

ff29svar

ff29svar4#

phpqrcode库配置速度非常快,API文档也非常容易理解。
除了abaumg的回答我在PHP中附加了2个来自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);

2.二维码解码器

另见zxing解码器:
http://zxing.org/w/decode.jspx
检查输出非常有用。

3.数据格式列表

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

  • 网址:http://stackoverflow.com(包括http://协议)
  • 电子邮件地址:mailto:name@example.com
  • 电话号码:+16365553344(包括国家代码)
  • 短信:smsto:number:message
  • 彩信:mms:编号:主题
  • YouTube视频:youtube://ID(可能在iPhone上工作,不标准化)
8xiog9wr

8xiog9wr5#

Github上的qrcode-generator。最简单的脚本和作品就像魅力。
优点:

  • 无第三方依赖
  • QR码生成次数无限制
axr492tv

axr492tv6#

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

jucafojl

jucafojl7#

我一直在使用谷歌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上的大多数图像应用程序都会在你没有意识到的情况下安装它。

相关问题