關於GD和OB快取的輸出

yaoxs發表於2021-06-29

下面程式碼如果不使用ob快取則可能圖片輸出失敗,原因是因為輸出圖片資料之前有資料輸出。所以需要清除輸出圖片之前的資料

public function waterLookOne($water_mark){
        // 首先我們從 GD 手動建立水印影像
        $stamp = imagecreatetruecolor(500, 300);
        // 畫一個矩形(這裡主要將背景顏色填充為白色)
        imagefilledrectangle($stamp, 0, 0, 500, 300, 0xFFFFFF);

        // 字型顏色
        $black = imagecolorallocate($stamp, 0, 0, 0);

        // The text to draw
        for($i = 0; $i <= 10; $i++){
            $water_mark = $water_mark.'          '.$water_mark;
        }
        // Replace path by your own font path
        // ROOT_PATH .'public/101440.ttf';
        $font = $this->fontFile;

        for($i=0; $i < 10; $i++){
            // Add some shadow to the text
            imagettftext($stamp, $this->fontSize, 30, 10, 10+($i*100), $black, $font, $water_mark);
        }
        ob_start();
        imagepng($stamp);
        imagedestroy($stamp);
        $produced = ob_get_contents();
        ob_end_clean();
        header("Content-type: image/png"); 
        echo $produced;die;  
    }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章