Maison > développement back-end > tutoriel php > PHP télécharge les images distantes et les enregistre dans le code local

PHP télécharge les images distantes et les enregistre dans le code local

小云云
Libérer: 2023-03-20 10:18:01
original
9909 Les gens l'ont consulté

Lorsque nous utilisons PHP pour créer un robot d'exploration simple, nous rencontrons souvent le besoin de télécharger des images distantes, alors implémentons simplement cette exigence. L'article vous présente principalement la méthode de téléchargement d'images distantes en PHP. L'éditeur la trouve plutôt bonne. Maintenant, je la partage avec vous et vous donne une référence, j'espère que cela pourra vous aider.

1. Utilisez curl

Par exemple, nous avons les deux images suivantes :

$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'
];
Copier après la connexion

Dans la première étape, nous peut directement Pour utiliser l'implémentation de code la plus simple :

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);
}
Copier après la connexion

Ensuite, lors du téléchargement d'images distantes, vous pouvez faire ceci :

foreach ( $images as $url ) {
  download($url);
}
Copier après la connexion

2. Encapsuler une classe

Après avoir clarifié l'idée, on peut encapsuler cette fonction de base dans une classe :

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);
  }
}
Copier après la connexion

Maintenant, on peut aussi l'optimiser un peu comme ça :

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);
  }
Copier après la connexion

Après l'avoir encapsulé dans une classe, nous pouvons appeler le code comme ceci pour télécharger des images :

$spider = new Spider();

foreach ( $images as $url ) {
  $spider->downloadImage($url);
}
Copier après la connexion

De cette façon, le téléchargement d'images à distance de base est OK.

Recommandations associées :

HP implémente une méthode efficace pour obtenir la taille et la taille des images distantes

Exemple de développement de téléchargement php à distance images à partager localement

Comment utiliser php pour collecter des images distantes dans la zone locale

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal