Current File : //home/tradevaly/text.tradevaly.com.bd/phpmy/vendor/pragmarx/google2fa-qrcode/src/QRCode/Bacon.php |
<?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;
}
}