| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <?phpnamespace addons\qrcode\library;use Endroid\QrCode\ErrorCorrectionLevel;class Service{    /**     * 生成二维码     * @param $params     * @return \Endroid\QrCode\QrCode     * @throws \Endroid\QrCode\Exception\InvalidPathException     */    public static function qrcode($params)    {        $config = get_addon_config('qrcode');        $params = is_array($params) ? $params : [$params];        $params = array_merge($config, $params);        $params['labelfontpath'] = isset($params['labelfontpath']) && is_file($params['labelfontpath']) ? $params['labelfontpath'] : ROOT_PATH . 'public' . $config['labelfontpath'];        $params['logopath'] = isset($params['logopath']) && is_file($params['logopath']) ? $params['logopath'] : ROOT_PATH . 'public' . $config['logopath'];        // 前景色        list($r, $g, $b) = sscanf($params['foreground'], "#%02x%02x%02x");        $foregroundcolor = ['r' => $r, 'g' => $g, 'b' => $b];        // 背景色        list($r, $g, $b) = sscanf($params['background'], "#%02x%02x%02x");        $backgroundcolor = ['r' => $r, 'g' => $g, 'b' => $b];        // 创建实例        $qrCode = new \Endroid\QrCode\QrCode($params['text']);        $qrCode->setSize($params['size']);        // 高级选项        $qrCode->setWriterByName($params['format']);        $qrCode->setMargin($params['padding']);        $qrCode->setEncoding('UTF-8');        $qrCode->setErrorCorrectionLevel(new ErrorCorrectionLevel($params['errorlevel']));        $qrCode->setForegroundColor($foregroundcolor);        $qrCode->setBackgroundColor($backgroundcolor);        // 设置标签        if (isset($params['label']) && $params['label']) {            $qrCode->setLabel($params['label'], $params['labelfontsize'], $params['labelfontpath'], $params['labelalignment']);        }        // 设置Logo        if (isset($params['logo']) && $params['logo']) {            $qrCode->setLogoPath($params['logopath']);            $qrCode->setLogoSize($params['logosize'], $params['logosize']);        }        $qrCode->setRoundBlockSize(true);        $qrCode->setValidateResult(false);        $qrCode->setWriterOptions(['exclude_xml_declaration' => true]);        return $qrCode;    }}
 |