>  기사  >  백엔드 개발  >  원격 이미지를 다운로드하고 로컬에 저장하는 PHP 방법

원격 이미지를 다운로드하고 로컬에 저장하는 PHP 방법

微波
微波원래의
2017-06-28 11:48:271993검색

이 글에서는 주로 PHP에서 원격 이미지를 다운로드하는 방법을 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 올려드리겠습니다. 편집기를 따라 살펴보겠습니다

PHP를 사용하여 간단한 크롤러를 만들 때 원격 이미지를 다운로드해야 하는 경우가 종종 있으므로 이를 간단히 구현해 보겠습니다.

1. 컬 사용

예를 들어 다음 두 장의 사진이 있습니다.

$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);
}

이런 식으로 기본 원격 이미지 다운로드는 괜찮습니다.

위 내용은 원격 이미지를 다운로드하고 로컬에 저장하는 PHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.