Enregistré sur le server l'image d'une url

Mammouth du PHP | 643 Messages

16 juil. 2018, 21:12

Salut tout le monde, voilà j'ai décidé de cloture le sujet précédent car pas vraiment la même chose.

Enfait je récupere dans mon csv les resultat sous la forme :
$url = 'https://www.spectacles.carrefour.fr/item/manifestation/visuels/380/3806489461915670/3806489461915670990/grand/iris6146683165946568924.jpg';
Du coup je cherche à stoclé l'image sur un dossier de mon server, mais je ne vois pas du tout comment procéder.

Mammouth du PHP | 2703 Messages

16 juil. 2018, 22:14

http://php.net/manual/fr/function.file-get-contents.php
et
http://php.net/manual/fr/function.file-put-contents.php

si c'est pour ne rien changer à l'image, cela me semble une très mauvaise idée.

Mammouth du PHP | 643 Messages

16 juil. 2018, 22:39

Apres je redimmensionne les photos mais je veut une originale et les photos ne sont pas issu du meme site et j'en affiche 25 Par page donc 25 requetes différente peut etre un peu long pour affiché je pense.
non ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 juil. 2018, 23:13

On est d'accord que pour récupérer ces images tu as bien l'accord écrit des propriétaires de chaque site ?

Par exemple, pour le réseau France Billet, il faut faire une demande ici pour avoir accès à un webservice qui te fournit toutes les infos :
http://www.francebillet.com/editorial.d ... iation_RFB
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

17 juil. 2018, 05:56

La licence data l'autorise du moment que la source est cité ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 juil. 2018, 10:21

La licence data l'autorise du moment que la source est cité ;)
Je ne sais pas ce que c'est que la "licence data" mais si tu as un accord de licence avec les sites concernés, alors pas de problème.
Je le signalais juste pour t'éviter des problèmes d'ordre juridique :D


Or1 t'a donné les 2 fonctions pour faire le traitement de récupération de l'image. Il est préférable que tu fasses la récupération et le traitement (génération des miniatures) dans une chaine de traitement à part, et que ce ne soit pas lié à l'affichage par tes visiteurs, sinon effectivement ça va être très long.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

19 juil. 2018, 19:51

Re, du coup j'ai donc mis en place juste ceci:
// $ligne[28] Correspond 0 la ligne du CSV parcourut, résultat rendu par exemple :
// https://cnstlltn.com/master/2f3ced88-5969-4d9e-9c60-f36e913844be/fetehuitrenb.jpg

$image = file_get_contents($ligne[28]);
 file_put_contents('/photo/image.jpg', $image); 
Mais rien ne s'enregistre dans mon repertoire photo ....

Mammouth du PHP | 643 Messages

20 juil. 2018, 18:44

J'ai trouvé la fonction copie sinon qui marche mais vraiment très très lent est ce normal ?

		$photo = $ligne[28];
		copy($ligne[28], 'photo/'.$titre.'.jpg');
			

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 juil. 2018, 23:58

Non, copy() est très rapide, en revanche, c'est peut être le serveur distant sur lequel tu essaye de télécharger l'image qui est très lent depuis ton serveur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

21 juil. 2018, 06:19

Je télécharge depuis plusieurs site et les copies sur mon dossier photo mais en local.
J'ai essayer donc une autre méthode pour voir qui fonctionne mais on dirai que les photos sont vide, elles s'enregistre bien dans le dossier mais si je ve ouvrir une pohto via le dossier il me dit " nous ne prenons pas en charge ce genre de format " alors que c'est du jpg.
Code :
// Récupérer la photo d'une url	
	function getimg($url) {         
		$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';              
		$headers[] = 'Connection: Keep-Alive';         
		$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';         
		$user_agent = 'php';         
		$process = curl_init($url);         
		curl_setopt($process, CURLOPT_HTTPHEADER, $headers);         
		curl_setopt($process, CURLOPT_HEADER, 0);         
		curl_setopt($process, CURLOPT_USERAGENT, $user_agent); //check here         
		curl_setopt($process, CURLOPT_TIMEOUT, 30);         
		curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);         
		curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);         
		$return = curl_exec($process);         
		curl_close($process);         
		return $return;     
   
      // Coté traitement
$imgurl = $ligne[28]; 
$imagename= basename($imgurl);
if(file_exists('./photo/'.$imagename)){continue;} 
$image = getimg($imgurl); 
file_put_contents('photo/'.$imagename,$image);  
	}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 juil. 2018, 08:46

Debug ton code à coup de var_dump() pour voir le contenu des variables et suivre l'exécution de ton script.
Là à première vue, c'est normal qu'il ne fonctionne pas vu qu'il y a du code après un return
Quand tout le reste a échoué, lisez le mode d'emploi...