diff --git a/examples/QRImageWithLogo.php b/examples/QRImageWithLogo.php index 76aa5ced7..76f9e40ec 100644 --- a/examples/QRImageWithLogo.php +++ b/examples/QRImageWithLogo.php @@ -72,7 +72,7 @@ class QRImageWithLogo extends QRImage{ } if($this->options->imageBase64){ - $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData); + $imageData = $this->base64encode($imageData, 'image/'.$this->options->outputType); } return $imageData; diff --git a/examples/QRImageWithText.php b/examples/QRImageWithText.php index fe6b962a9..e3b2d8c62 100644 --- a/examples/QRImageWithText.php +++ b/examples/QRImageWithText.php @@ -20,7 +20,7 @@ namespace chillerlan\QRCodeExamples; use chillerlan\QRCode\Output\QRImage; -use function base64_encode, imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor, +use function imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor, imagedestroy, imagefilledrectangle, imagefontwidth, in_array, round, str_split, strlen; class QRImageWithText extends QRImage{ @@ -50,7 +50,7 @@ class QRImageWithText extends QRImage{ } if($this->options->imageBase64){ - $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData); + $imageData = $this->base64encode($imageData, 'image/'.$this->options->outputType); } return $imageData; diff --git a/src/Output/QRFpdf.php b/src/Output/QRFpdf.php index 0f56dfeb9..1c3b99d4e 100644 --- a/src/Output/QRFpdf.php +++ b/src/Output/QRFpdf.php @@ -103,7 +103,7 @@ class QRFpdf extends QROutputAbstract{ } if($this->options->imageBase64){ - $pdfData = sprintf('data:application/pdf;base64,%s', base64_encode($pdfData)); + $pdfData = $this->base64encode($pdfData, 'application/pdf'); } return $pdfData; diff --git a/src/Output/QRImage.php b/src/Output/QRImage.php index 967b4cd13..098a7825d 100644 --- a/src/Output/QRImage.php +++ b/src/Output/QRImage.php @@ -19,9 +19,9 @@ use chillerlan\QRCode\{QRCode, QRCodeException}; use chillerlan\Settings\SettingsContainerInterface; use Exception; -use function array_values, base64_encode, call_user_func, count, extension_loaded, imagecolorallocate, imagecolortransparent, +use function array_values, call_user_func, count, extension_loaded, imagecolorallocate, imagecolortransparent, imagecreatetruecolor, imagedestroy, imagefilledrectangle, imagegif, imagejpeg, imagepng, in_array, - is_array, ob_end_clean, ob_get_contents, ob_start, range, sprintf; + is_array, ob_end_clean, ob_get_contents, ob_start, range; /** * Converts the matrix into GD images, raw or base64 output (requires ext-gd) @@ -127,7 +127,7 @@ class QRImage extends QROutputAbstract{ } if($this->options->imageBase64){ - $imageData = sprintf('data:image/%s;base64,%s', $this->options->outputType, base64_encode($imageData)); + $imageData = $this->base64encode($imageData, 'image/'.$this->options->outputType); } return $imageData; diff --git a/src/Output/QRMarkup.php b/src/Output/QRMarkup.php index 06d6e88cb..a351c8cf4 100644 --- a/src/Output/QRMarkup.php +++ b/src/Output/QRMarkup.php @@ -151,7 +151,7 @@ class QRMarkup extends QROutputAbstract{ } if($this->options->imageBase64){ - $svg = sprintf('data:image/svg+xml;base64,%s', base64_encode($svg)); + $svg = $this->base64encode($svg, 'image/svg+xml'); } return $svg; diff --git a/src/Output/QROutputAbstract.php b/src/Output/QROutputAbstract.php index d4ed3d0c9..a115cf722 100644 --- a/src/Output/QROutputAbstract.php +++ b/src/Output/QROutputAbstract.php @@ -14,8 +14,7 @@ namespace chillerlan\QRCode\Output; use chillerlan\QRCode\{Data\QRMatrix, QRCode}; use chillerlan\Settings\SettingsContainerInterface; - -use function call_user_func_array, dirname, file_put_contents, get_called_class, in_array, is_writable, sprintf; +use function base64_encode, call_user_func_array, dirname, file_put_contents, get_called_class, in_array, is_writable, sprintf; /** * common output abstract @@ -92,6 +91,13 @@ abstract class QROutputAbstract implements QROutputInterface{ */ abstract protected function setModuleValues():void; + /** + * Returns a base64 data URI for the given string and mime type + */ + protected function base64encode(string $data, string $mime):string{ + return sprintf('data:%s;base64,%s', $mime, base64_encode($data)); + } + /** * saves the qr data to a file *