php实现二维码
PHP 生成二维码的方法
PHP 可以通过多种方式生成二维码,以下是几种常见的方法:
使用 QR Code 库(如 endroid/qr-code)
安装 endroid/qr-code 库:
composer require endroid/qr-code
生成二维码示例代码:
require_once 'vendor/autoload.php';
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
$result = Builder::create()
->writer(new PngWriter())
->data('https://www.example.com')
->encoding(new Encoding('UTF-8'))
->errorCorrectionLevel(new ErrorCorrectionLevelLow())
->size(300)
->margin(10)
->roundBlockSizeMode(new RoundBlockSizeModeMargin())
->build();
// 直接输出二维码图像
header('Content-Type: '.$result->getMimeType());
echo $result->getString();
// 保存到文件
$result->saveToFile(__DIR__.'/qrcode.png');
使用 PHP QR Code 库
下载 PHP QR Code 库(可从 GitHub 获取):
include('phpqrcode/qrlib.php');
// 简单生成二维码
QRcode::png('https://www.example.com');
// 带参数生成
QRcode::png('https://www.example.com', 'qrcode.png', QR_ECLEVEL_L, 10, 2);
使用 Google Charts API(在线方式)
$url = urlencode('https://www.example.com');
$qrUrl = "https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=$url";
echo '<img src="'.$qrUrl.'" alt="QR Code"/>';
二维码生成参数说明
- 尺寸:通常以像素为单位,常见尺寸为 200x200 到 500x500
- 容错级别:影响二维码损坏时的可读性,有 L(7%)、M(15%)、Q(25%)、H(30%)四个级别
- 边距:二维码周围的空白区域,通常为 2-4 个模块宽度
- 数据编码:确保使用正确的字符编码(如 UTF-8)
二维码内容类型
可以生成包含以下内容的二维码:
- 网址 URL
- 文本信息
- 联系方式(vCard 格式)
- WiFi 网络配置
- 电子邮件地址
- 电话号码
- 短信内容
高级功能实现
带 logo 的二维码
使用 endroid/qr-code 添加 logo:
$result = Builder::create()
->data('https://www.example.com')
->size(300)
->logoPath(__DIR__.'/logo.png')
->logoResizeToWidth(50)
->build();
彩色二维码
$result = Builder::create()
->data('https://www.example.com')
->foregroundColor(0, 0, 0, 0) // 黑色
->backgroundColor(255, 255, 255, 0) // 白色
->build();
注意事项
- 确保服务器有写入权限(如需保存文件)
- 在线 API 方式需要网络连接
- 二维码内容不宜过长(最多约 4000 个字符)
- 对于敏感信息,考虑生成临时二维码或添加访问控制







