Page 1 sur 1

Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 13:28
par kassius250
Bonjour à tous,

Voici mon problème : J'ai une portion de code permettant le redimensionnement d'images distantes (pour obtenir des miniatures). Cela fonctionne très bien, nénamoins, je souhaiterais pouvoir afficher une image par défaut dans le cas où l'image distante n'existe pas.

Voici mon code :

dans le programme principal :
echo " <br /><img src=image_miniature.php?src=$image ></img><br />";

voici le contenu de image_miniature.php :
<?php
$src = $_GET['src'];
$source = ImageCreateFromJpeg($src);
$srcheight = imagesy($source);
$srcwidth = imagesx($source); // or $srcwidth = 1;

$newheight = 45 ;
$ratio = 45 / $srcheight;
$newwidth = ceil($srcwidth * $ratio);

$thumb = ImageCreateTrueColor($newwidth, $newheight);
$source = imagecreatefromjpeg($src);
ImageCopyResampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $srcwidth, $srcheight);
ImageJpeg ($thumb);
?>

Avez-vous une piste pour me permettre l'affichage d'une image par défaut si l'image ($image) n'est pas disponible/n'existe pas ?

Merci par avance

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 15:20
par xTG
if( !file_exists($src) )
  $src = ""; // chemin de l'image par défaut
Tout simplement :)

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 17:01
par kassius250
Bonjour,

Merci pour ta réponse. Néanmoins file_exists($image) me retourne toujours 0. Mon image par défaut est donc affichée même lorsque l'image source existe.

As-tu une autre idée?

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 17:27
par xTG
L'image se trouve-t-elle sur ton serveur ?

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 17:33
par AoSiX
Si c'est une URL distante,
function url_exists($url) {
	$h = get_headers($url);
	$status = array();
	preg_match('/HTTP\/.* ([0-9]+) .*/', $h[0] , $status);
	return ($status[1] == 200);
}

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 19:33
par kassius250
Merci pour cette réponse. Le code fonctionne bien.

Cependant cette portion de code ralenti énormément le chargement de ma page (10 secondes de chargement supplémentaires pour 25 images). N'y aurait-il pas un moyen de valider si l'image existe ou non par l'utilisation de test sur l'image (taille de l'image avec imagesy($source) par exemple)?

Merci d'avance

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 20:38
par xTG
Vérifies le retour de ImageCreateFromJpeg, s'il est égal à false c'est qu'il y a eu impossibilité de récupérer l'image.

Re: Afficher une image par défaut si l'image distante n'existe p

Posté : 25 août 2010, 21:25
par stopher
Sinon , tu peux afficher ta page en brut , et gérer test tests via des requêtes ajax .

Avec une petite gestion de cache , ca doit le faire ....

-> ta page se charge , et lance de façon asynchrone ttes les requetes ajax pour checker les img
-> Si en cache ok , le résultat sera presque immédiat
-> sinon , le test d'une image ne retardera pas les tests des autres images , puisque tout sera fait en parallèle ..

Bon , ce n'est qu'une idée .. :) à creuser .. ou pas ;)

Ch.