begin process at 2012 05 30 19:20:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Image aléatoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Image aléatoire

mardi 24 avril 2007 à 21:25:22 | Image aléatoire

theoscar

Bonjour à tous !

Voici un code qui affiche une image aléatoire sur une page à partir d'un dossier 'image'. Ce code fonctionne très bien mais j'aimerais que la recherche inclue aussi les sous-répertoires de 'image'. Pourriez vous m'aider?

Voici le code:

[code]

<?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 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 = 500;
    //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);
?>

[/code]

merci d'avance!
@+

mercredi 25 avril 2007 à 03:35:20 | Re : Image aléatoire

vilhjalms

Saell og blesuð

http://www.google.com/search?complete=1&hl=en&q=php+recursive+directory&aq=t&oq=php+recurs
http://fr.php.net/dir
http://fr.php.net/readdir
etc

Google est votre ami :)

Vilhjálms Sigurðsdóttir aka Frëyjá
mercredi 25 avril 2007 à 09:54:20 | Re : Image aléatoire

theoscar

C'est pour ça que j'ai mis ça dans la rubrique PHP 'débutants', c'est parce que j'arrive pas à le mettre en forme correctement sans avoir plein d'erreurs. Google a beau être mon ami, je n'en reste pas moins un gros benet en PHP !

Si tu pouvais m'aider sur ce coup là, après ça j'ai fini mon projet ...

merci d'avance
jeudi 26 avril 2007 à 20:48:54 | Re : Image aléatoire

yoadsl

je te conseillerais de mettre le parcours dans un autre fonction qui prend en entrée le nom du rep de départ et qui renvoie la liste des fichiers images et avant ou après ton preg_match tu utilise la fonction isdirectory ou is_directory je ne sais plus et si ça renvoit vrai ben tu appelle en récursif sur ce sous-répertoire en ajoutant le retour de ta fonction à la liste que tu crée
voilà voilà !
@+
jeudi 26 avril 2007 à 23:50:44 | Re : Image aléatoire

theoscar

oulaaa. Je suis franchement incapable de faire ça moi .....
vendredi 27 avril 2007 à 00:24:19 | Re : Image aléatoire

coucou747

Administrateur CodeS-SourceS
Salut,

envoi ton code et les messages si t'as plein d'erreurs...


In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
vendredi 27 avril 2007 à 13:09:45 | Re : Image aléatoire

theoscar

Voilà le code, mais j'ai du mal à comprendre .... concernant les messages d'erreur, j'en ai pas, j'ai juste une page blanche.

<?php 
        //On indique le dossier images
    $chem_img = "./galerie/Photos/";
    //On ouvre le dossier images
    $handle  = opendir($chem_img);

      //pour chaque fichier et dossier
   while ($fichier = readdir($handle))
   {
      //on ne traite pas les . et ..
      if(($fichier != '.') && ($fichier != '..'))
      {
         //si c'est un dossier, on le lit
         if (is_dir($handle.'/'.$fichier))
         
                  {
            //Si les fichiers sont des images
            if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $fichier))
                {
                    $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 = 500;
    //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);
 //fermeture du pointeur
   closedir($pointeur);
?>

lundi 30 avril 2007 à 02:21:18 | Re : Image aléatoire

yoadsl

				Comme j'avais envie de me changer les idées de mon travail je me suis penché sur ton problème et voici la solution, je me suis permis de rajouter dans les dossier exclus ceux nommées miniatures vu ce que tu comptes en faire et le code est ultra-commenté pour que tu puisse comprendre ce que j'ai fait
				

<?

function parcours($chemin)
{
 //on Crée un tableau vide
 $listef=array();
 
 //On ouvre le répertoire
 $handle  = opendir($chemin);
 
 //On parcoure chaque élément du dossier
 while ($file = readdir($handle))
 {
  //on élimine les dossiers indésirables
  if(($file != '.') && ($file != '..') && ($file != 'miniatures'))
  { 
   //Si les fichiers sont des images
   if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))
   {
    //on les ajoute à la liste
    $listef[] = $chemin."/".$file;
   }
   //si c'est un dossier
   if(is_dir($chemin."/".$file))
   {
    //on appelle la fonction sur ce dossier et ajoute le résultat à la liste existante
    $listef=array_merge($listef,parcours($chemin."/".$file));
   }
  }
 }
 //on fermer le répertoire
 closedir($handle);
 //on renvoie la liste de fichier obtenue
 return($listef);
}
function imagerandom($chemin,$taillemax)
{
//puis on récupère les chemins de toutes les images 
$listef=parcours($chemin);
//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($listef[$random_img]);
//Largeur maximale de l'image pour la création des miniatures 
$largeur_maxi = $taillemax;
//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=\"".$listef[$random_img]."\" target=\ "_blank\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" title=\"".$listef[$random_img]."\" /></a>";
}
imagerandom("Photos",500);
?>
lundi 30 avril 2007 à 02:27:07 | Re : Image aléatoire

yoadsl

bon j'ai dû rajouter un espace sans faire exprès lors de mon copier-coller :
dans l'avant-dernière ligne de code :
target=\ "_blank\"
il faut mettre
target=\"_blank\"
@++
lundi 30 avril 2007 à 02:32:11 | Re : Image aléatoire

yoadsl

lol c chiant qu'on puisse pas éditer ses messages !
encore un pour dire que si dans preference.php tu as mis des répertoires cachés n'oublie pas de les rajouter dans la ligne répertoire interdit (.,..,miniatures etc etc) sinon tes photos cachées s'afficheront aléatoirement
@+

1 2

Cette discussion est classée dans : code, aléatoire, image, size, largeur


Répondre à ce message

Sujets en rapport avec ce message

générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave Image sur click .. [ par nicolas66 ] Bonsoir @ tous !Je voulais juste savoir comen il était possible d'afficher une image créee avec php dans la meme page ou il y a un formulaire sur clic imagecolorallocate [ par xylo2 ] Salut !J'ai fait un truc tout basique, je voudrais ajouter un texte sur une image pré-existante.Voici mon code :if (!isset($mat)) $mat="Toto";< code aléatoire [ par Tomcube ] J'aimerai connaître l'utilité de générer un code aléatoire, comme par exemple le yahoo mail qui, dès qu'on se connecte, renvoie vers une page du type Help me [ par YuGiOhFlash ] [size=3] Help je cherche un code:Explication G une page index ou il fo ecrir un code pour voir des images.une page calculetrice pour mettre les images image et GD [ par papipsycho ] salut a tous voila jai un pb donc jai un script qui marche tres bien pour cree des image et prendre des inf dans ma BDD(un script que jai recupere ici PROBLEME GENERATION IMAGE AVEC GD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ par zzzzzz ] C'est desesperent! jen'arrive toujours pas a comprendre d'ou viens le prob depuis hier :(en fait j'ai un fichier code.php de contenue:$nbr = rand(1000 echo avec imagecreatefromjpeg ?? [ par PsYk0PaT ] Bonjour,J'ai ce bout de code qui fonctionne à merveille: $image = imageCreateFromJpeg("la_map.jpg"); $colorCyan = imageColorAllocate$image,0,255,255); code perso: balises spéciales [ par Samiby ] Bonjour,Je programme actuellement un blog, et pour poster des lessages, j'ai créé un code personnalisé.J'ai un prblème avec les images.La syntaxe de m erreur 500 aléatoire [ par eax ] bonjour à tous!j'ai un problème qui est assez curieux et qui semble être lié à ma redirection en .comen effet lorsque je me connecte sur www.bitsenfol


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales