<?php namespace app\common; use Endroid\QrCode\Color\Color; use Endroid\QrCode\Encoding\Encoding; use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow; use Endroid\QrCode\Label\Label; use Endroid\QrCode\Logo\Logo; use Endroid\QrCode\QrCode as QrCodeQrCode; use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin; use Endroid\QrCode\Writer\PngWriter; class Qrcode{ private $logo = null; private $label = null; private $size = 400; public function __construct() { // } /** * 设置二维码LOGO */ public function setLogo($logo_path) { $this->logo = Logo::create($logo_path) //logo的照片路径 ->setResizeToWidth(20); //logo的大小 } /** * 设置二维码下方文字 */ public function setLabel($text) { $this->label = Label::create($text) //二维码下面的文字 ->setTextColor(new Color(0, 0, 0)); //文字的颜色 } /** * 生成二维码 * @param string $url [链接] * @return string [type] [返回图片path] */ public function create(string $url,string $fileName) { $writer = new PngWriter(); $qrCode = QrCodeQrCode::create($url)//跳转的url地址 ->setEncoding(new Encoding('UTF-8')) //设置编码格式 ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow()) //设置纠错级别为低 ->setSize($this->size) //大小 ->setMargin(30) //边距 ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin()) //设置圆轮大小边距 ->setForegroundColor(new Color(0, 0, 0)) //前景色 ->setBackgroundColor(new Color(255, 255, 255)); //背景色 $result = $writer->write($qrCode, $this->logo, $this->label); $result->getString(); $file_path = public_path() . "/storage/qrcode/"; if (!is_dir($file_path)) { mkdir($file_path, 0755, true); } if (!empty($fileName)){ $qrcode = $fileName.'.png'; }else{ $qrcode = time() . mt_rand(0, 9999). '.png'; } $result->saveToFile($file_path . $qrcode); return $file_path . $qrcode; } }