Affiche plusieux Images aléatoire dans un dossier site web

jeremyguyot Messages postés 77 Statut Membre -  
jeremyguyot Messages postés 77 Statut Membre -
Bonjour j'ai trouver un script sur internet qui me permette d'afficher une image aléatoire de mon répértoires upload ce pendans je veux qu'il en affiche une autre a coté comme ça sa en faira 2 le code que j'ai est celuis-ci :

Image aléatoire
<?php
########################################
#
# Affichage image aléatoire //manucci.info
#
########################################

//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 sont des images
if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))
{
$listef[] = $file;
}
}

$random_img = rand(0, count($listef)-1); //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 (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);
?>

voila si vous pouvez m'aider c'est pour mon site http://wamiz.free.fr/uploads.php merci

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Voilou (codé un peu à l'arrache..mais ça fonctionne ^^ )

    J'ai découpé en fonctions histoire que ça soit plus facile à utiliser.

    Les fonctions :
    <?php
    
    function createLink($chem_img,$listef,$random_img,$width,$height){
    return "<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]."'></img>
        </a>";
    }
    
    function getImgFromDir($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 sont des images
       if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file)){
        $listeImg[] = $file;
       }
      }
      //On ferme le dossier
      closedir($handle);
     return $listeImg;
    }
    
    
    
    function getImgAlea($chem_img,$listef){
      //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées.
      $random_img = rand(0, count($listef)-1); 
     
     //On calcule la largeur et la hauteur de l'image aléatoire
     if(file_exists($chem_img."/".$listef[$random_img])){
       $size = getimagesize($chem_img."/".$listef[$random_img]);
      }else{
      echo "Fichier introuvable : ".$chem_img."/".$listef[$random_img];
      return -1;
     }
     //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];
     }
     
     $result = array();
     $result['random_img'] = $random_img;
     $result['size'] = $size;
     $result['width'] = $width;
     $result['height'] = $height;
     
     return $result;
    }
    
     
    
    ?>
    


    Et donc.. pour utiliser les fonctions, il suffit d'utiliser :
    //On récupère la liste des fichiers images du répertoire
    $listef = getImgFromDir("./images"); 
    $img1 = getImgAlea("./images",$listef);
    $img2 = getImgAlea("./images",$listef);
    while ($img1['random_img'] == $img2['random_img']){//pour éviter que la même image apparaisse deux fois...
     $img2 = getImgAlea("./images",$listef);
    }
    //On affiche l'image aléatoire (en respectant les standards ! :) )
    if($img1){
      echo createLink("./images",$listef,$img1['random_img'],$img1['width'],$img1['height']);
    }
    if($img2){
      echo createLink("./images",$listef,$img2['random_img'],$img2['width'],$img2['height']);
    }
    
    


    Cordialement, 
    Jordane                                                                 
    0
  2. jeremyguyot Messages postés 77 Statut Membre
     
    Salut le code que tu mla donné ne fonctionne pas enfaite je veux que a coté de l'image aléatoire il y a une déxiéme qui s'affiche si je mais deux fois le script l'image s'affiche en dessous
    0
  3. jeremyguyot Messages postés 77 Statut Membre
     
    J'ai réussi a les placer grace au css mais je veut que la taille style: "width="200" height="100"

    comment le placer ici //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>";

    merci
    0