Maison > développement back-end > tutoriel php > Explication détaillée sur la façon de télécharger des images distantes et de les enregistrer localement à l'aide de PHP

Explication détaillée sur la façon de télécharger des images distantes et de les enregistrer localement à l'aide de PHP

墨辰丷
Libérer: 2023-03-27 09:08:02
original
1866 Les gens l'ont consulté

Cet article présente principalement la méthode de téléchargement d'images distantes en PHP. L'éditeur la trouve plutôt bonne, je vais donc la partager avec vous maintenant et la donner comme référence. Suivons l'éditeur et jetons un coup d'œil

Lorsque nous utilisons PHP pour créer un simple robot d'exploration, nous rencontrons souvent le besoin de télécharger des images distantes, alors implémentons simplement cette exigence.

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 un premier temps, nous pouvons utiliser directement le code le plus simple à mettre en œuvre :

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, vous pouvez télécharger l'image distante Like 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 ceci :

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ée dans une classe, on peut appeler le code pour télécharger l'image comme ceci :

$spider = new Spider();

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

Comme ça, c'est OK pour le téléchargement d'images à distance de base.

Recommandations associées :

PHPTéléchargement à distance Explication détaillée de la définition et de l'utilisation des classes de fichiers

PHP Télécharger images distantes et les enregistrer dans le code local

Implémentation PHPTélécharger Code associé au fichier

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