php實作下載遠端圖片儲存到本機

陈政宽~
發布: 2023-03-11 18:54:01
原創
1403 人瀏覽過

這篇文章主要介紹了PHP實作下載遠端圖片的方法,小編覺得還挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

在使用 PHP 做簡單的爬蟲的時候,我們常常會遇到需要下載遠端圖片的需求,所以下面來簡單實現這個需求。

1.使用curl

例如我們有下面這兩張圖片:

$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' ];
登入後複製

第一步,我們可以直接來使用最簡單的程式碼實作:

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); }
登入後複製

那在下載遠端圖片的時候就可以這樣:

foreach ( $images as $url ) { download($url); }
登入後複製

2.封裝一個類別

縷清思路之後,我們可以將這個基本的功能封裝到一個類別中:

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); } }
登入後複製

在者,我們還可以這樣稍微優化一下:

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); }
登入後複製

封裝成類別之後,我們可以這樣呼叫程式碼來下載圖片:

$spider = new Spider(); foreach ( $images as $url ) { $spider->downloadImage($url); }
登入後複製

這樣,對付基本的遠端圖片下載就OK了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

以上是php實作下載遠端圖片儲存到本機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!