正如Nile已經指出的那樣,您想要爲圖像使用Data-URI。
使用驗證碼的工作代碼示例如下:
echo "how";
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
$tmpImg = tempnam('/tmp', 'image');
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
imagejpeg($im, $tmpImg);
imagedestroy($im);
echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents($tmpImg)) . '">';
unlink($tmpImg);
會發生什麼?它或多或少是你使用的代碼,但是圖像被寫入臨時文件而不是直接發送到瀏覽器 - 這是imagejpeg的第二個參數。 然後,使用Base64編碼將臨時文件的內容放入Data-URI,然後將DataUri設置爲圖像標籤的src。
您將要刪除最後的臨時文件!
如果您想省略臨時文件,可以使用輸出緩衝來捕獲圖像。這看起來像下面這樣:
echo 'how';
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
ob_start();
imagejpeg($im);
imagedestroy($im);
$image = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpeg;base64,' . base64_encode($image) . '">';
看這個網頁:http://en.wikipedia.org/wiki/Data_URI_scheme。最後,你將要刪除'header('Content-type ...');'並使用base64進行編碼......這裏是一個關於SO的問題,它提供了一個問題示例:http ://stackoverflow.com/questions/1461793/ie6-gd-and-php-image-outputting – jeremy
使用HTML ....... – Petah