导入依赖
composer require endroid/qr-code
封装成函数,传入二维码包含的值,存储路径,二维码大小,二维码边距
private function getCode($content, $directory, $size = 300, $margin = 10)
{
// 创建二维码对象
// $content: 二维码内容
// new Encoding('UTF-8'): 设置编码为UTF-8
// ErrorCorrectionLevel::Low: 设置错误纠正级别为低
// $size: 二维码尺寸,默认为300
// $margin: 二维码边距,默认为10
$qrCode = new QrCode($content,
new Encoding('UTF-8'),
ErrorCorrectionLevel::Low, $size, $margin);
// 生成二维码图片
// 创建PngWriter对象用于生成PNG格式的二维码图片
$writer = new PngWriter();
// 使用PngWriter对象将二维码对象写入结果
$result = $writer->write($qrCode);
// 生成唯一文件名(根据内容和时间戳)
// $content . '.png': 将二维码内容作为文件名,并添加.png后缀
$filename = $content . '.png';
// $directory: 文件保存的目录
// rtrim($directory, '/') . '/' . $filename: 确保目录路径末尾没有斜杠,并拼接文件名
$filePath = rtrim($directory, '/') . '/' . $filename;
// 保存文件
// 使用结果对象的saveToFile方法将二维码图片保存到指定路径
$result->saveToFile($filePath);
}
调用
$directory = implode("/", [
'storage',
'ceshi',
]);
// 创建保存目录(如果不存在)
if (!is_dir($directory)) {
mkdir($directory, 0755, true); // 自动创建多级目录
}
$code=['a','b'];
$this->getCode($code, $directory);
效果
放的二维码图违规了,就不放了