有時候不需要圖片直接輸出到瀏覽器,需要如下處理!
輸出到瀏覽器
$qrCode = new QrCode();
$qrCode
->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG);
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();
轉為字符串
$qrCode = new QrCode();
$qrCode
->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG);
// 開啟緩沖區
ob_start ();
// 將圖片寫入內存
imagepng ($qrCode->render());
// 從內存中讀取圖片
$imageData = ob_get_contents();
// 關閉緩沖區
ob_end_clean ();
// 將內容寫入cdn
$up_res = $this->upload_cdn($imageData);
dump($up_res);
或者再折騰成base64
$qrCode = new QrCode();
$qrCode
->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG);
// 開啟緩存
ob_start();
imagepng($qrCode->render());
// 從內存中讀取圖片
$imageData = ob_get_contents();
// 關閉緩沖區
ob_end_clean ();
$imageDataBase64 = 'data:image/png;base64,' . base64_encode ($imageData);
echo "<img src='$imageDataBase64'/>";