Viewing file: Bacon.php (2.26 KB) -rwxr-x--- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace PragmaRX\Google2FAQRCode\QRCode;
use BaconQrCode\Renderer\ImageRenderer; use BaconQrCode\Writer as BaconQrCodeWriter; use BaconQrCode\Renderer\Image\SvgImageBackEnd; use BaconQrCode\Renderer\Image\ImageBackEndInterface; use BaconQrCode\Renderer\Image\ImagickImageBackEnd; use BaconQrCode\Renderer\RendererStyle\RendererStyle; use BaconQrCode\Writer;
class Bacon implements QRCodeServiceContract { /** * @var ImageBackEndInterface|RendererInterface|null $imageBackEnd */ protected $imageBackEnd;
/** * Google2FA constructor. * * @param ImageBackEndInterface|RendererInterface|null $imageBackEnd */ public function __construct($imageBackEnd = null) { $this->imageBackEnd = $imageBackEnd; }
/** * Generates a QR code data url to display inline. * * @param string $string * @param int $size * @param string $encoding Default to UTF-8 * * @return string */ public function getQRCodeInline($string, $size = 200, $encoding = 'utf-8') { $renderer = new ImageRenderer( (new RendererStyle($size))->withSize($size), $this->getImageBackEnd() );
$bacon = new Writer($renderer);
$data = $bacon->writeString($string, $encoding);
if ($this->getImageBackEnd() instanceof ImagickImageBackEnd) { return 'data:image/png;base64,' . base64_encode($data); }
return $data; }
/** * Check if Imagick is available * * @return int */ public function imagickIsAvailable() { return extension_loaded('imagick'); }
/** * Get image backend * * @return ImageRenderer */ public function getImageBackend() { if (empty($this->imageBackEnd)) { $this->imageBackEnd = !$this->imagickIsAvailable() ? new SvgImageBackEnd() : new ImagickImageBackEnd(); }
$this->setImageBackEnd($this->imageBackEnd);
return $this->imageBackEnd; }
/** * Set image backend * * @param $imageBackEnd * @return $this */ public function setImageBackend($imageBackEnd) { $this->imageBackEnd = $imageBackEnd;
return $this; } }
|