1. 程式人生 > >PHP直接將文件流轉換為字符串

PHP直接將文件流轉換為字符串

qrcode 文件 col etc color ob_start ttext ren pad

有時候不需要圖片直接輸出到瀏覽器,需要如下處理!

輸出到瀏覽器

$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'/>";

PHP直接將文件流轉換為字符串