二维码已经成为我们日常生活和工作中不可或缺的一部分。无论是支付、扫码登录、还是信息分享,二维码都发挥着重要的作用。在PHP开发中,我们同样可以利用二维码技术来为用户提供更加便捷和高效的交互体验。
一、使用免费第三方接口, 考虑稳定性问题
https://api.qrtool.cn/?text=https://blog.51cto.com/ding&size=500&margin=20&level=H
https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=https://blog.51cto.com/ding
二、PHP生成二维码
- 安装PHP QR Code库, php必须安装了GD扩展
PHP QR Code是一个用于生成二维码的PHP库。通过Composer进行安装
composer require endroid/qr-code
2. 生成二维码, 代码如下:
<?php
require 'vendor/autoload.php';
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode;
use Endroid\QrCode\Writer\PngWriter;
use Endroid\QrCode\Writer\ValidationException;
$writer = new PngWriter();
// 创建二维码
$qrCode = QrCode::create('测试文本')
->setEncoding(new Encoding('UTF-8'))
->setErrorCorrectionLevel(ErrorCorrectionLevel::Low)
->setSize(300) // 大小
->setMargin(10) // 编剧
->setRoundBlockSizeMode(RoundBlockSizeMode::Margin)
->setForegroundColor(new Color(0, 0, 0)) // 前面颜色
->setBackgroundColor(new Color(255, 255, 255)); // 背景颜色
// 添加logo
$logo = Logo::create(__DIR__.'/qrcode_logo.png')
->setResizeToWidth(50) // logo大小
->setPunchoutBackground(true)
;
// 底部解释文字
$label = Label::create('我是测试二维码')
->setTextColor(new Color(255, 0, 0));
$result = $writer->write($qrCode, $logo, $label);
// 浏览器输出
header('Content-Type: '.$result->getMimeType());
echo $result->getString();
// 保存到文件
$result->saveToFile(__DIR__.'/qrcode.png');
// 生成img标签
$dataUri = $result->getDataUri();
生成结果如下图