| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- namespace addons\pickup\library;
- use Endroid\QrCode\ErrorCorrectionLevel;
- class Service
- {
- /**
- * 生成二维码
- * @param $params
- * @return \Endroid\QrCode\QrCode
- * @throws \Endroid\QrCode\Exception\InvalidPathException
- */
- public static function qrcode($params)
- {
- $params = is_array($params) ? $params : [$params];
- // 前景色
- list($r, $g, $b) = sscanf($params['foreground']??'#000000', "#%02x%02x%02x");
- $foregroundcolor = ['r' => $r, 'g' => $g, 'b' => $b];
- // 背景色
- list($r, $g, $b) = sscanf($params['background']??'#ffffff', "#%02x%02x%02x");
- $backgroundcolor = ['r' => $r, 'g' => $g, 'b' => $b];
- // 创建实例
- $qrCode = new \Endroid\QrCode\QrCode($params['text']??request()->domain().'/addons/pickup#/pages/index/index');
- $qrCode->setSize($params['size']??250);
- // 高级选项
- $qrCode->setWriterByName($params['format']??'png');
- $qrCode->setMargin($params['padding']??10);
- $qrCode->setEncoding('UTF-8');
- $qrCode->setErrorCorrectionLevel(new ErrorCorrectionLevel($params['errorlevel']??'quartile'));
- $qrCode->setForegroundColor($foregroundcolor);
- $qrCode->setBackgroundColor($backgroundcolor);
- $qrCode->setRoundBlockSize(true);
- $qrCode->setValidateResult(false);
- $qrCode->setWriterOptions(['exclude_xml_declaration' => true]);
- return $qrCode;
- }
- }
|