2008年12月16日 星期二

[php]擷取遠端圖片語法file_get_contents 或 curl

php5
$img = file_get_contents("http://192.168.0.2/1.jpg");
file_put_contents("1.jpg",$img);

php4.3.x
$img = file_get_contents("http://192.168.0.2/1.jpg");
$fp = fopen("1.jpg","wr");
fwrite($fp,$img);
fclose($fp);

若是圖片載本機端
就可以用 copy('來源圖檔','目的圖檔+檔名');

部份圖片機器有防止直接,可以用Curl 來抓取.
function ycimg($file,$newfile)
{
$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
// 初始化一個 cURL 對象
$curl = curl_init();

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 FirePHP/0.2.1");

curl_setopt($curl, CURLOPT_REFERER, "http://www.xxx.com.tw/"); //有時候需要設定該網站網址才能抓取圖片
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
// 設置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, $file);

// 設置header
curl_setopt($curl, CURLOPT_HEADER, 0);

// 設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// 運行cURL,請求網頁
$data = curl_exec($curl);

// 關閉URL請求
curl_close($curl);

//寫入獲得的數據
$write = @fopen($newfile,"w");
fwrite($write,$data);
fclose($write);
//判斷是否為圖片
if (!getimagesize($newfile)) return false;
else return TRUE;
}

【下列文章您可能也有興趣】

沒有留言: