上述的代碼感覺沒有問題,別人也測試過,但是我下載下來,圖片檔案為什麼打不開,蛋疼,坐等貴人解救!
回複內容:
上述的代碼感覺沒有問題,別人也測試過,但是我下載下來,圖片檔案為什麼打不開,蛋疼,坐等貴人解救!
url錯誤了。這種寫法要抓取靜態路徑圖片。
並且http://t1.baidu.com/it/u=1504295979,2... 也不是個圖片地址。或者是有訪問限制的地址,本地直接存取無許可權。
你可以列印$image_data變數看看
一個對的有存取權限的路徑就無問題了。
grabImage("http://s.segmentfault.com/img/logo.pn...);
請使用curl函數進行擷取,因為當某些網站採取防外聯的時候需要考慮到,比如百度圖片。
於是有以下函數:
function getImage($uri,$from){ob_start();$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $uri);if($from){ curl_setopt($ch,CURLOPT_REFERER, $from);}curl_exec($ch);$img = ob_get_contents();curl_close($ch);ob_clean();return $img;}
調用:
$uri = "http://imgsrc.baidu.com/forum/pic/item/e55f70600c338744d0fbf8bd510fd9f9d62aa0b4.jpg";$from = "http://tieba.baidu.com/i/28295132"; //這裡請自行分析規律,一般情況分析HEADER中Refererecho getImage($uri,$from);
若要儲存為本地檔案請使用二進位寫入,如:
$fs = fopen("abc.jpg","w+");fwrite($fs,getImage($uri,$from));fclose($fs);
以上就是採集圖片和採集防盜鏈圖片的基本方法咯。