php如何下載遠程圖片呢??

php遠程下載圖片常常用到,如何實現呢??

原理:經過curl請求url,將請求返回的文件流 寫入到指定的路徑中php

<?php
/**
 * Created by PhpStorm.
 * User: 蕭逸
 * Date: 2017/6/20
 * Time: 10:11
 *
 * 在使用 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'
];

class Spider
{

    //定義下載圖片  用於發送url
    public function downloadImage($url, $path = 'images/')
    {
        $ch = curl_init();
        //以url的形式 進行請求
        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);
    }
}

//封裝成類以後,咱們能夠這樣調用代碼來下載圖片:這樣,對付基本的遠程圖片下載就OK了。
$spider = new Spider();
foreach ($images as $url) {
    $spider->downloadImage($url);
}
相關文章
相關標籤/搜索