nico_papy Posté 23 Novembre 2006 Posté 23 Novembre 2006 (modifié) salut a tous, désolé d'innonder le forum de problèmes mais me voila confronter au problème suivant : j'ai un script en php d' affichage d' images aléatoires qui est le suivant : <?php //On indique le dossier images $chem_img = "./images"; //On ouvre le dossier images $handle = opendir($chem_img); //On parcoure chaque élément du dossier while ($file = readdir($handle)) { //Si les fichiers ne sont pas des images if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file)) { $listef[] = $file; } } rand(0, count($listef)); //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées. $random_img = rand(0, count($listef)); //On calcule la largeur et la hauteur de l'image aléatoire $size = getimagesize($chem_img."/".$listef[$random_img]); //Largeur maximale de l'image pour la création des miniatures $largeur_maxi = 180; //Si la largeur dépasse la limite autorisée... if ($size[0] > $largeur_maxi) { //...la nouvelle largeur est égale à la limite à ne pas dépasser $width = $largeur_maxi; //La largeur d'origine divisée par la largeur limitée (on obtient un chiffre qui sert à faire la même proportion pour la hauteur) $theight = ($size[0]/$largeur_maxi); //La hauteur originale est divisée par le chiffre obtenu précédemment afin que l'image conserve les mêmes proportions que l'originale (mais en mode vignette) $height = ($size[1]/$theight); } else { //Sinon on garde la taille originale $width = $size[0]; $height = $size[1]; } //On affiche l'image aléatoire (en respectant les standards ! ) echo "<a href=\"".$chem_img."/".$listef[$random_img]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" /></a>"; //On ferme le dossier closedir($handle); ?> les images s'affichent correctement mais de temps en temps j'ai un message d' erreur qui s' affiche et qui est le suivant : Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/111/sdb/5/8/pl4ymobil/site1/index.php on line 128 merci d' avance à tous, j'ai chercher sur internet mais n'est trouvé aucune réponse. je compte sur votre aide ! @+++++ !! Modifié 23 Novembre 2006 par nico_papy
Dan Posté 23 Novembre 2006 Posté 23 Novembre 2006 Tout simplement parce que tu essaie d'accéder à une image qui n'existe pas. Il faut utiliser rand(0, count($listef)-1); au lieu de rand(0, count($listef)); Les images sont numérotées à partir de listef[0] Dan
nico_papy Posté 23 Novembre 2006 Auteur Posté 23 Novembre 2006 j'essai ce soir et je te tiens au courant du résultat. merci pour ta réponse. nico_papy
nico_papy Posté 24 Novembre 2006 Auteur Posté 24 Novembre 2006 c'est bon ça marche parfaitement. merci pour ta réponse Dan. @+
pandrekano Posté 8 Mars 2007 Posté 8 Mars 2007 (modifié) Merci pour cet excellent code qui marche TB avec FF, Camino, Mozilla, Safari... Et qui ne fonctionne pas avec Opéra qui ne bouge pas du tout chez moi et, donc ne change pas de photo ! http://ppzx.net/docs.php5 et le code php : <?php //On indique le dossier images $chem_img = "./photos"; //On ouvre le dossier images $handle = opendir($chem_img); //On parcoure chaque lment du dossier while ($file = readdir($handle)) { //Si les fichiers ne sont pas des images if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file)) { $listef[] = $file; } } rand(0, count($listef)-1); //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouves. $random_img = rand(0, count($listef)); //On calcule la largeur et la hauteur de l'image alatoire $size = realpath($chem_img."/".$listef[$random_img]); //Largeur maximale de l'image pour la cration des miniatures $largeur_maxi = 600; //Si la largeur dpasse la limite autorise... if ($size[0] > $largeur_maxi) { //...la nouvelle largeur est gale la limite ne pas dpasser $width = $largeur_maxi; //La largeur d'origine divise par la largeur limite (on obtient un chiffre qui sert faire la mme proportion pour la hauteur) $theight = ($size[0]/$largeur_maxi); //La hauteur originale est divise par le chiffre obtenu prcdemment afin que l'image conserve les mmes proportions que l'originale (mais en mode vignette) $height = ($size[1]/$theight); } else { //Sinon on garde la taille originale $width = $size[0]; $height = $size[1]; } //On affiche l'image alatoire (en respectant les standards ! ) echo "<a href=\"".$chem_img."/".$listef[$random_img]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" /></a>"; //On ferme le dossier closedir($handle);?> Avez-vous une idée ? Merci d'avance, Pierre AP Modifié 8 Mars 2007 par pandrekano
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant