Affichage image aléatoire (plusieurs répertoires)
Posté : 04 juin 2008, 08:49
Bonjour,
J’ai un script qui me permet d'afficher aléatoirement les images d'un répertoire. Ce script scan le répertoire, génère une miniature au format x * y des images comprises dans le répertoire, et permet à l'internaute de faire afficher au format réel l'image lorsqu'il clique sur la miniature.
Se script fonctionne à merveille (sauf que de temps en temps il affiche un croix rouge au lieu d'une image) mais il n'affiche que les images d'un seul répertoire.
J'aimerai donc qu'il affiche les images des différents répertoires se trouvant dans mon répertoire images.
albums
|--Hver
|--insects
|--paysages
|--lacs
|-- ..............
Voici le script que j'utilise : pour le moment je donne le nom d'un répertoire choisi mais j'aimerai qu'il scan tous les répertoires qui sont dans le répertoire "images".
J’ai un script qui me permet d'afficher aléatoirement les images d'un répertoire. Ce script scan le répertoire, génère une miniature au format x * y des images comprises dans le répertoire, et permet à l'internaute de faire afficher au format réel l'image lorsqu'il clique sur la miniature.
Se script fonctionne à merveille (sauf que de temps en temps il affiche un croix rouge au lieu d'une image) mais il n'affiche que les images d'un seul répertoire.
J'aimerai donc qu'il affiche les images des différents répertoires se trouvant dans mon répertoire images.
albums
|--Hver
|--insects
|--paysages
|--lacs
|-- ..............
Voici le script que j'utilise : pour le moment je donne le nom d'un répertoire choisi mais j'aimerai qu'il scan tous les répertoires qui sont dans le répertoire "images".
<?php
//On indique le dossier images
$chem_img = "../galerie/albums/Hiver";
//On ouvre le dossier images
$handle = opendir($chem_img);
//On parcoure chaque élément du dossier
while ($file = readdir($handle))
{
//Si les fichiers sont des images
if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))
{
$listef[] = $file;
}
}
$random_img = rand(0, count($listef)); //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées.
//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
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=\"© 2007 Photos Vosges\" /></a>";
//On ferme le dossier
closedir($handle);
?>
Voilà, si vous avez une idée pour améliorer le script dans mon sens ou si vous avez une autre solution je suis ouvert. Merci d'avance