导入依赖
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);
效果