《PHP實戰:PHP實現下載遠程圖片保存到本地的方法》要點:
本文介紹了PHP實戰:PHP實現下載遠程圖片保存到本地的方法,希望對您有用。如果有疑問,可以聯系我們。
在使用 PHP 做簡單的爬蟲的時候,我們經常會遇到需要下載遠程圖片的需求,所以下面來簡單實現這個需求.PHP實例
1.使用 curl
PHP實例
比如我們有下面這兩張圖片:PHP實例
$images = [ 'https://dn-laravist.qbox.me/2015-09-22_00-17-06j.png', 'https://dn-laravist.qbox.me/2015-09-23_00-58-03j.png' ];
第一步,我們可以直接來使用最簡單的代碼實現:PHP實例
function download($url, $path = 'images/') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); $filename = pathinfo($url, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); }
那在下載遠程圖片的時候就可以這樣:PHP實例
foreach ( $images as $url ) { download($url); }
2.封裝一個類
PHP實例
縷清思路之后,我們可以將這個基本的功能封裝到一個類中:PHP實例
class Spider { public function downloadImage($url, $path = 'images/') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); $filename = pathinfo($url, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); } }
在者,我們還可以這樣稍微優化一下:PHP實例
public function downloadImage($url, $path='images/') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); $this->saveAsImage($url, $file, $path); } private function saveAsImage($url, $file, $path) { $filename = pathinfo($url, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); }
封裝成類之后,我們可以這樣調用代碼來下載圖片:PHP實例
$spider = new Spider(); foreach ( $images as $url ) { $spider->downloadImage($url); }
這樣,對付基本的遠程圖片下載就OK了.PHP實例
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持維易PHP.PHP實例
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/609.html