|
2 | 2 |
|
3 | 3 | namespace CodingLibs\MFA\Support; |
4 | 4 |
|
| 5 | +use BaconQrCode\Renderer\Color\Rgb; |
| 6 | +use BaconQrCode\Renderer\Image\Png; |
| 7 | +use BaconQrCode\Renderer\Module\SquareModule; |
| 8 | +use BaconQrCode\Renderer\RendererStyle\Fill; |
| 9 | +use BaconQrCode\Renderer\RendererStyle\RendererStyle; |
| 10 | +use BaconQrCode\Writer; |
| 11 | + |
5 | 12 | class QrCodeGenerator |
6 | 13 | { |
7 | 14 | public static function generateBase64Png(string $text, int $size = 200): string |
8 | 15 | { |
9 | | - // Lightweight inline QR encoder using endroid/qr-code if available, else fallback to Google Charts |
10 | | - if (class_exists('Endroid\\QrCode\\QrCode')) { |
11 | | - return self::generateWithEndroid($text, $size); |
12 | | - } |
13 | | - return self::generateWithGoogleCharts($text, $size); |
14 | | - } |
| 16 | + $renderer = new Png( |
| 17 | + new RendererStyle( |
| 18 | + $size, |
| 19 | + 0, |
| 20 | + null, |
| 21 | + null, |
| 22 | + Fill::uniformColor(new Rgb(255, 255, 255), new Rgb(0, 0, 0)), |
| 23 | + new SquareModule() |
| 24 | + ) |
| 25 | + ); |
15 | 26 |
|
16 | | - protected static function generateWithEndroid(string $text, int $size): string |
17 | | - { |
18 | | - $qrCode = new \Endroid\QrCode\QrCode($text); |
19 | | - $qrCode->setSize($size); |
20 | | - $pngData = $qrCode->writeString(); |
21 | | - return 'data:image/png;base64,' . base64_encode($pngData); |
22 | | - } |
23 | | - |
24 | | - protected static function generateWithGoogleCharts(string $text, int $size): string |
25 | | - { |
26 | | - $url = 'https://chart.googleapis.com/chart?cht=qr&chs=' . $size . 'x' . $size . '&chl=' . rawurlencode($text); |
27 | | - $pngData = @file_get_contents($url) ?: ''; |
| 27 | + $writer = new Writer($renderer); |
| 28 | + $pngData = $writer->writeString($text); |
28 | 29 | return 'data:image/png;base64,' . base64_encode($pngData); |
29 | 30 | } |
30 | 31 | } |
|
0 commit comments