この記事では、主に 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 中国語 Web サイトの他の関連記事を参照してください。