PHP的file_get_contents函數(shù)是一種非常強(qiáng)大的網(wǎng)絡(luò)請(qǐng)求函數(shù),可以讀取遠(yuǎn)程的文本資源,也可以讀取遠(yuǎn)程的圖片資源。
比如,下面的代碼可以讀取遠(yuǎn)程圖片,并保存為本地文件:
$remote_image_url = "http://example.com/image.jpg"; $local_image_file = "image.jpg"; $image_content = file_get_contents($remote_image_url); file_put_contents($local_image_file, $image_content);
這段代碼先指定了一個(gè)遠(yuǎn)程圖片的URL地址,然后指定了一個(gè)本地圖片文件名。接著使用file_get_contents函數(shù),讀取遠(yuǎn)程圖片的二進(jìn)制數(shù)據(jù)。最后使用file_put_contents函數(shù),將二進(jìn)制數(shù)據(jù)保存為本地圖片。
除了保存為本地文件,我們還可以把圖片的二進(jìn)制數(shù)據(jù)直接輸出到Web瀏覽器:
$remote_image_url = "http://example.com/image.jpg"; $image_content = file_get_contents($remote_image_url); header("Content-Type: image/jpeg"); echo $image_content;
這段代碼和上一段代碼基本相同,只是最后一行改成了把圖片的二進(jìn)制數(shù)據(jù)輸出到Web瀏覽器。在輸出之前,還通過header函數(shù)設(shè)置了Content-Type響應(yīng)頭字段,告訴瀏覽器這是一張JPEG格式的圖片。
以上代碼都是讀取遠(yuǎn)程圖片的方式,如果要讀取本地圖片,只需要將URL地址改成本地文件的路徑即可。比如:
$local_image_file = "/path/to/image.jpg"; $image_content = file_get_contents($local_image_file); header("Content-Type: image/jpeg"); echo $image_content;
以上代碼將本地圖片文件的路徑指定為$local_image_file變量,然后使用file_get_contents函數(shù)讀取圖片的二進(jìn)制數(shù)據(jù)。最后和前面的代碼一樣,把二進(jìn)制數(shù)據(jù)輸出到Web瀏覽器。
使用file_get_contents函數(shù)讀取圖片的時(shí)候,需要注意的一點(diǎn)是,二進(jìn)制數(shù)據(jù)有時(shí)候可能會(huì)很大,可能會(huì)超過PHP的內(nèi)存限制。
對(duì)于大文件,可以使用流式讀取的方式:
$remote_image_url = "http://example.com/image.jpg"; $fp = fopen($remote_image_url, 'r'); if ($fp) { while (!feof($fp)) { $chunk = fread($fp, 1024); echo $chunk; } } fclose($fp);
這段代碼使用fopen函數(shù)打開遠(yuǎn)程圖片,然后使用fread函數(shù)和while循環(huán),分批讀取圖片的二進(jìn)制數(shù)據(jù)。每次最多讀取1024字節(jié)。最后關(guān)閉文件句柄。
以上就是使用file_get_contents函數(shù)讀取圖片的全部內(nèi)容了。