php獲取遠(yuǎn)程圖片的原理是使用readfile函數(shù)讀入一個(gè)遠(yuǎn)程文件的stream,然后寫(xiě)入一個(gè)文件生成本地圖片
注:也可以用file_get_contents函數(shù),二者的區(qū)別是readfile直接把文件stream輸出,而后者賦給變量。
以下自定義函數(shù)可以實(shí)現(xiàn)遠(yuǎn)程圖片獲取,并自動(dòng)下載為本地文件:
<?php
//
// Function: 獲取遠(yuǎn)程圖片并把它保存到本地
//
//
// 確定您有把文件寫(xiě)入本地服務(wù)器的權(quán)限
//
//
// 變量說(shuō)明:
// $url 是遠(yuǎn)程圖片的完整URL地址,不能為空。
// $filename 是可選變量: 如果為空,本地文件名將基于時(shí)間和日期
// 自動(dòng)生成.
function GrabImage($url,$filename="") {
if($url==""):return false;endif;
if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
}
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
$img=GrabImage("/Article/UploadFiles/201003/20100313135251414.jpg","");
if($img):echo '<pre><img src="'.$img.'"></pre>';
else:echo "false";
endif;
?>