PHP中的header() 函數是一個非常常用的函數,它可以告訴瀏覽器向客戶端返回特定類型的內容,比如文本、HTML、XML或者圖片等。在這里我們主要探討如何使用header() 函數來返回圖片。
一、 如何輸出圖片
如果我們要輸出一張圖片,我們需要使用來告訴瀏覽器,返回的文件類型是一個圖片(png)。在實際應用中,我們還需要在header() 函數的參數中,加上Content-Length 來告訴服務器返回的圖片的大小。
例如,我們有一張名為“test.png”的圖片,那么在PHP中輸出這張圖片的代碼應該如下所示:
header('Content-type:image/png');
header('Content-Length: ' . filesize("test.png"));
readfile("test.png");
二、 如何發送 “Cache-Control” 和 “Expires” HTTP 標頭
對于一些常用的圖片,我們沒有必要每次都通過網絡獲取一次,我們可以通過緩存實現圖片的快速訪問。在PHP中,可以通過設置緩存相關的HTTP頭來實現這一操作。
在server端設置Cache-Control 和 Expires 可以控制客戶端中web資源緩存的最大有效時間和過期時間,通過這兩個HTTP頭,瀏覽器可以將頁面緩存,并在頁面資源或圖片過期之前再次調用,以便更快地渲染并減少服務器負載。例如,我們可以使用下面的代碼來實現添加Cache-Control和Expires頭部信息來緩存圖片:header('Cache-Control: max-age=3600, public');
header('Expires: '.gmdate('D, d M Y H:i:s', time()+3600).' GMT');
三、 原圖的 base64 編碼版本
有時候,我們還需要返回一個HTML頁面,但是這個頁面中又需要引用一些圖片等資源。這時就可以在HTML頁面中,用base64編碼的方式嵌入圖片。我們可以使用PHP來將原圖轉換成base64編碼的版本,然后返回到HTML頁面中,以此實現引用。
我們可以先使用如下的方式讀取圖片:$fp = fopen('test.jpg', 'r');
$content = fread($fp, filesize('test.jpg'));
fclose($fp);
然后再將讀取出的圖片文件編碼為base64,如下:$str = base64_encode($content);
echo '';
通過以上代碼,就可以將原圖轉換成base64編碼的版本,方便將圖片嵌入HTML中。
總結:
在PHP中,我們可以使用header() 函數來處理返回的圖片,通過緩存相關的HTTP頭來實現圖片的快速訪問,以及將圖片轉換為base64編碼的版本。這樣在實際應用中,我們就可以更方便地處理圖片了。