setSize($pngSize); $qr->setMargin($margin); // Encoding if (class_exists(\Endroid\QrCode\Encoding\Encoding::class)) { // v5 $qr->setEncoding(new \Endroid\QrCode\Encoding\Encoding('UTF-8')); } else { // v4 if (method_exists($qr, 'setEncoding')) { $qr->setEncoding('UTF-8'); } } // Error correction if (class_exists(\Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh::class)) { // v5 $qr->setErrorCorrectionLevel(new \Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh()); } elseif (class_exists(\Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevel::class)) { // v4 $qr->setErrorCorrectionLevel( new \Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevel( \Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevel::HIGH ) ); } // Round blocks (v5 uniquement) if ( method_exists($qr, 'setRoundBlockSizeMode') && class_exists(\Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin::class) ) { $qr->setRoundBlockSizeMode(new \Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin()); } // Écriture PNG / SVG $pngWriter = new PngWriter(); $svgWriter = new SvgWriter(); $png = $pngWriter->write($qr); $svg = $svgWriter->write($qr); // Sauvegarde $pngPath = $publicDir . '/' . $basename . '.png'; $svgPath = $publicDir . '/' . $basename . '.svg'; $png->saveToFile($pngPath); $svg->saveToFile($svgPath); echo "✅ QR codes générés :\n"; echo "PNG : " . realpath($pngPath) . "\n"; echo "SVG : " . realpath($svgPath) . "\n";