codemasher 5 лет назад
Родитель
Сommit
934f18c404
1 измененных файлов с 26 добавлено и 31 удалено
  1. 26 31
      examples/QRImageWithText.php

+ 26 - 31
examples/QRImageWithText.php

@@ -3,7 +3,8 @@
  * Class QRImageWithText
  *
  * example for additional text
- * @link https://github.com/chillerlan/php-qrcode/issues/35
+ *
+ * @link         https://github.com/chillerlan/php-qrcode/issues/35
  *
  * @filesource   QRImageWithText.php
  * @created      22.06.2019
@@ -11,12 +12,17 @@
  * @author       smiley <smiley@chillerlan.net>
  * @copyright    2019 smiley
  * @license      MIT
+ *
+ * @noinspection PhpComposerExtensionStubsInspection
  */
 
 namespace chillerlan\QRCodeExamples;
 
 use chillerlan\QRCode\Output\QRImage;
 
+use function base64_encode, imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor,
+	imagedestroy, imagefilledrectangle, imagefontwidth, in_array, round, str_split, strlen;
+
 class QRImageWithText extends QRImage{
 
 	/**
@@ -26,22 +32,11 @@ class QRImageWithText extends QRImage{
 	 * @return string
 	 */
 	public function dump(string $file = null, string $text = null):string{
-		$file ??= $this->options->cachefile;
-
-		$this->image = \imagecreatetruecolor($this->length, $this->length);
-		$background  = \imagecolorallocate($this->image, ...$this->options->imageTransparencyBG);
+		// set returnResource to true to skip further processing for now
+		$this->options->returnResource = true;
 
-		if((bool)$this->options->imageTransparent && \in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
-			\imagecolortransparent($this->image, $background);
-		}
-
-		\imagefilledrectangle($this->image, 0, 0, $this->length, $this->length, $background);
-
-		foreach($this->matrix->matrix() as $y => $row){
-			foreach($row as $x => $M_TYPE){
-				$this->setPixel($x, $y, $this->moduleValues[$M_TYPE]);
-			}
-		}
+		// there's no need to save the result of dump() into $this->image here
+		parent::dump($file);
 
 		// render text output if a string is given
 		if($text !== null){
@@ -54,8 +49,8 @@ class QRImageWithText extends QRImage{
 			$this->saveToFile($imageData, $file);
 		}
 
-		if((bool)$this->options->imageBase64){
-			$imageData = 'data:image/'.$this->options->outputType.';base64,'.\base64_encode($imageData);
+		if($this->options->imageBase64){
+			$imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
 		}
 
 		return $imageData;
@@ -69,7 +64,7 @@ class QRImageWithText extends QRImage{
 		$qrcode = $this->image;
 
 		// options things
-		$textSize = 3; // see imagefontheight() and imagefontwidth()
+		$textSize  = 3; // see imagefontheight() and imagefontwidth()
 		$textBG    = [200, 200, 200];
 		$textColor = [50, 50, 50];
 
@@ -77,28 +72,28 @@ class QRImageWithText extends QRImage{
 		$bgHeight = $bgWidth + 20; // 20px extra space
 
 		// create a new image with additional space
-		$this->image = \imagecreatetruecolor($bgWidth, $bgHeight);
-		$background  = \imagecolorallocate($this->image, ...$textBG);
+		$this->image = imagecreatetruecolor($bgWidth, $bgHeight);
+		$background  = imagecolorallocate($this->image, ...$textBG);
 
 		// allow transparency
-		if((bool)$this->options->imageTransparent && \in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
-			\imagecolortransparent($this->image, $background);
+		if($this->options->imageTransparent && in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
+			imagecolortransparent($this->image, $background);
 		}
 
 		// fill the background
-		\imagefilledrectangle($this->image, 0, 0, $bgWidth, $bgHeight, $background);
+		imagefilledrectangle($this->image, 0, 0, $bgWidth, $bgHeight, $background);
 
 		// copy over the qrcode
-		\imagecopymerge($this->image, $qrcode, 0, 0, 0, 0, $this->length, $this->length, 100);
-		\imagedestroy($qrcode);
+		imagecopymerge($this->image, $qrcode, 0, 0, 0, 0, $this->length, $this->length, 100);
+		imagedestroy($qrcode);
 
-		$fontColor = \imagecolorallocate($this->image, ...$textColor);
-		$w         = \imagefontwidth($textSize);
-		$x         =  \round(($bgWidth - \strlen($text) * $w) / 2);
+		$fontColor = imagecolorallocate($this->image, ...$textColor);
+		$w         = imagefontwidth($textSize);
+		$x         = round(($bgWidth - strlen($text) * $w) / 2);
 
 		// loop through the string and draw the letters
-		foreach(\str_split($text) as $i => $chr){
-			\imagechar($this->image, $textSize, (int)($i * $w + $x), $this->length, $chr, $fontColor);
+		foreach(str_split($text) as $i => $chr){
+			imagechar($this->image, $textSize, (int)($i * $w + $x), $this->length, $chr, $fontColor);
 		}
 	}