ホームページ  >  記事  >  バックエンド開発  >  PHPを使用してリモート画像をダウンロードしてローカルに保存する方法の詳細な説明

PHPを使用してリモート画像をダウンロードしてローカルに保存する方法の詳細な説明

墨辰丷
墨辰丷オリジナル
2018-05-21 14:06:011826ブラウズ

この記事では、主に PHP でリモート画像をダウンロードする方法を紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう

PHP を使用して単純なクローラーを作成する場合、リモート画像をダウンロードする必要があることがよくあります。そのため、この必要性を単純に実装しましょう。

1.curl を使用します

たとえば、次の 2 つの図があります:

$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実装ダウンロードリモートに関連ファイルクラスコード

以上がPHPを使用してリモート画像をダウンロードしてローカルに保存する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。