setFont(new Font($params['labelfontpath'], $params['labelfontsize'])) ->setAlignment($alignment ?? new LabelAlignmentCenter()) ->setMargin(new Margin(...$labelMarginArr)) ->setTextColor($labelTextColor); } // Logo if (isset($params['logo']) && $params['logo'] && $params['logopath'] && file_exists($params['logopath'])) { $logo = Logo::create($params['logopath']) ->setResizeToWidth($params['logosize']); } if (($params['errorlevel'] ?? '') && in_array($params['errorlevel'], ['low', 'medium', 'quartile', 'high'])) { $params['errorlevel'] = ucfirst($params['errorlevel']); $className = "\Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevel{$params['errorlevel']}"; $errorCorrectionLevel = new $className(); } // 二维码 $qrcode = QrCode::create($params['text'] ?? $config['text']) ->setEncoding(new Encoding('UTF-8')) ->setErrorCorrectionLevel($errorCorrectionLevel ?? new ErrorCorrectionLevelMedium()) ->setSize(intval($params['size'] ?? $config['size'])) ->setMargin($params['padding']) ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin()) ->setForegroundColor($foregroundColor) ->setBackgroundColor($backgroundColor); $write = isset($params['format']) && $params['format'] === 'svg' ? new SvgWriter() : new PngWriter(); $result = $write->write($qrcode, $logo ?? null, $label ?? null, ['exclude_xml_declaration' => true]); return $result; } }