begin process at 2012 05 27 16:36:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > AFFICHAGE PHOTO ALÉATOIRE

AFFICHAGE PHOTO ALÉATOIRE


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :photo, jpg, aléatoire Niveau :Débutant Date de création :05/05/2006 Date de mise à jour :09/05/2006 20:51:03 Vu :10 367

Auteur : Bouillou2

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Ce script sert à afficher aléatoirement une des images jpg présentes sur le serveur.

Il crée un fichier texte contenant la liste de touts les jpg trouvés sur le serveur 1 fois par jour (afin d'inclure les renouvellement) lors de la première visite et affiche aléatoirement une des photos

Bonn',

Bouillou

Source

  • <?php
  • // ------------------------------------------------------------------------- //
  • // Affichage de photo aléatoire //
  • // Bouillou //
  • // Mai 2006 //
  • // //
  • // Fonctionnement: //
  • // Crée un fichier texte contenant la liste de tout les jpg trouvé sur le //
  • // serveur 1 fois par jour lors de la première visite. //
  • // Affiche aléatoirement 1 des photos trouvées. //
  • // ------------------------------------------------------------------------- //
  • //********************
  • //Création de la liste
  • //********************
  • $filename = 'liste_photos.txt';
  • //Crée la liste 1 fois par jour pour inclure le renouvellement des photos
  • //***********************************************************************
  • //Date de création du fichier liste de photo
  • if(file_exists($filename))
  • {
  • $date_file = date('d', filemtime($filename));
  • $date_jour = date('d');
  • }
  • else
  • {
  • $date_file = 1;
  • $date_jour = 2;
  • }
  • //echo $date_file . " " .$date_jour;
  • if((!file_exists($filename))||($date_file != $date_jour))
  • {
  • //Crée la liste
  • //-------------
  • $file_handle = fopen($filename,'w');
  • //Lance la routine de parssage
  • recurse_dir('.');
  • for($i=0;$i < count($Arrayrep); $i++)
  • fwrite($file_handle,$Arrayrep[$i]."\r\n");
  • fclose($file_handle);
  • $max = count($Arrayrep)-1;
  • $nb_aleatoire = rand(0,$max);
  • $photo_aléatoire = $Arrayrep[$nb_aleatoire];
  • }
  • else
  • {
  • //Lit la liste existante
  • //----------------------
  • $file_handle = fopen($filename,'r');
  • $file_content = fread ($file_handle , filesize($filename));
  • fclose($file_handle);
  • $file_content = explode("./",$file_content);
  • $max = count($file_content)-1;
  • $nb_aleatoire = rand(0,$max);
  • $photo_aléatoire = './'.$file_content[$nb_aleatoire];
  • $str_len = strlen($photo_aléatoire)-2;
  • $photo_aléatoire = substr($photo_aléatoire,0,$str_len);
  • }
  • //**********************************************
  • //Création de l'image miniature pour l'affichage
  • //**********************************************
  • //Création de l'image
  • //-------------------
  • $infos_img = getimagesize($photo_aléatoire);
  • $largeurDestination = 150;
  • //hauteur / largeur
  • $rapport = $infos_img[1] / $infos_img[0];
  • //Dimension de sortie
  • $hauteurDestination = $largeurDestination * $rapport;
  • $source = imagecreatefromjpeg($photo_aléatoire);
  • $largeurSource = imagesx($source);
  • $hauteurSource = imagesy($source);
  • if($largeurSource > $largeurDestination)
  • {
  • $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
  • or die ("Erreur lors de la création de l'image");
  • }
  • else
  • {
  • $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
  • or die ("Erreur lors de la création de l'image");
  • $largeurDestination = $infos_img[0];
  • $hauteurDestination = $infos_img[1];
  • }
  • //Redimentionnement
  • //-----------------
  • ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
  • //Création du fichier de sortie
  • //-----------------------------
  • if(file_exists('tmp.jpg'))
  • unlink('tmp.jpg');
  • $fh=fopen('tmp.jpg','w');
  • fclose($fh);
  • ImageJpeg ($im,'tmp.jpg',80);
  • //*************************
  • //Affiche l'image de sortie
  • //*************************
  • echo '<a href="javascript:;" onClick="afficheMaxi(\'',$photo_aléatoire,'\')"><img src="tmp.jpg" alt="Image aléatoire" title="Cliquer pour agrandir!" width="150" border="0" /></a>';
  • //Envoi du lien par mail à un ami
  • echo '<a href="mailto:mail_de_mon_ami@mon_ami.com?subject=Image de la jeunesse de Bottens&bcc=info@jeunessebottens.com&body=Jette un oeil là-dessus... ;o)%0D%0A%0D%0Awww.jeunessebottens.com',$Arrayrep[$nb_aleatoire],'%0D%0A%0D%0AA bientôt,%0D%0A%0D%0AJeunesse de Bottens"><br /><font size="2" color="#FFFFFF">Envoyer à un ami</font></a>';
  • //********************
  • //Fonction de parssage
  • //********************
  • function recurse_dir($DIR)
  • {
  • global $Arrayrep;
  • if ($ODIR = opendir($DIR))
  • {
  • while ($FILE = readdir($ODIR))
  • {
  • //Ne prend pas en compte les dossiers . et ..
  • if(($FILE != ".")&&($FILE != ".."))
  • {
  • $TMP = $DIR."/".$FILE ;
  • //Parse également les répertoires et sous-répertoires
  • if (is_dir($TMP))
  • recurse_dir($TMP);
  • else
  • {
  • //explode sépare le string avec le premier paramètre!
  • $Extension_fichier = explode(".", $FILE);
  • if(strtoupper($Extension_fichier[1]) == "JPG")
  • {
  • //Ne prend pas en compte les images se terminant
  • if (strtoupper(substr($FILE,-10)) != "_SMALL.JPG")
  • {
  • $Arrayrep[]= $TMP;
  • }
  • }
  • }
  • }
  • }
  • }
  • else
  • {
  • printf ("Impossible d'ouvrir le dossier") ;
  • }
  • }
  • ?>
  • <!-- *************************************** -->
  • <!-- * Affiche source de l'image par popup * -->
  • <!-- **************************************** -->
  • <script language="Javascript" type="text/javascript">
  • function afficheMaxi(chemin)
  • {
  • //Déclaration des variables
  • var largeur = 0;
  • var hauteur = 0;
  • var Left = 0;
  • var Top = 0;
  • //Main
  • i1 = new Image();
  • i1.src = chemin;
  • largeur = i1.width + 50;
  • hauteur = i1.height + 50;
  • Left=(screen.width-largeur)/2;
  • Top=(screen.height-hauteur)/2;
  • html = '<html><head><title>Image jeunesse de Bottens</title></head><body leftmargin=0 marginwidth=0 topmargin=5 marginheight=20 bgcolor="#333333"><center><img src="'+chemin+'" border=0 name=image onLoad="window.resizeTo(document.imageTest.width+50,document.imageTest.height+100)"></center></body></html>';
  • popupImage = window.open('','_blank','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=0, width=500, height=375, left='+Left+', top='+Top+'');
  • popupImage.document.open();
  • popupImage.document.write(html);
  • popupImage.document.close()
  • }
  • </script>
<?php
// ------------------------------------------------------------------------- //
// Affichage de photo aléatoire                                              //
// Bouillou                                                                  //
// Mai 2006                                                                  //
//                                                                           //
// Fonctionnement:                                                           //
// Crée un fichier texte contenant la liste de tout les jpg trouvé sur le    //
// serveur 1 fois par jour lors de la première visite.                       //
// Affiche aléatoirement 1 des photos trouvées.                              //
// ------------------------------------------------------------------------- //

 //********************
 //Création de la liste
 //********************

 $filename = 'liste_photos.txt';

 //Crée la liste 1 fois par jour pour inclure le renouvellement des photos
 //***********************************************************************

 //Date de création du fichier liste de photo
 if(file_exists($filename))
   {
    $date_file = date('d', filemtime($filename));
    $date_jour = date('d');
   }
 else
   {
    $date_file = 1;
    $date_jour = 2;
   }
 //echo $date_file . " " .$date_jour;
 if((!file_exists($filename))||($date_file != $date_jour))
   {
    //Crée la liste
    //-------------
    $file_handle = fopen($filename,'w');
    //Lance la routine de parssage
    recurse_dir('.');
    for($i=0;$i < count($Arrayrep); $i++)
        fwrite($file_handle,$Arrayrep[$i]."\r\n");
    fclose($file_handle);
    $max = count($Arrayrep)-1;
    $nb_aleatoire = rand(0,$max);
    $photo_aléatoire = $Arrayrep[$nb_aleatoire];
   }
 else
  {
   //Lit la liste existante
   //----------------------
   $file_handle = fopen($filename,'r');
   $file_content = fread ($file_handle , filesize($filename));
   fclose($file_handle);

   $file_content = explode("./",$file_content);
   $max = count($file_content)-1;
   $nb_aleatoire = rand(0,$max);
   $photo_aléatoire = './'.$file_content[$nb_aleatoire];
   $str_len = strlen($photo_aléatoire)-2;
   $photo_aléatoire = substr($photo_aléatoire,0,$str_len);
  }

 //**********************************************
 //Création de l'image miniature pour l'affichage
 //**********************************************

 //Création de l'image
 //-------------------
 $infos_img = getimagesize($photo_aléatoire);
 $largeurDestination = 150;
 //hauteur / largeur
 $rapport = $infos_img[1] / $infos_img[0];
 //Dimension de sortie
 $hauteurDestination = $largeurDestination * $rapport;

 $source = imagecreatefromjpeg($photo_aléatoire);

 $largeurSource = imagesx($source);
 $hauteurSource = imagesy($source);

 if($largeurSource > $largeurDestination)
   {
    $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
         or die ("Erreur lors de la création de l'image");
   }
 else
   {
    $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
         or die ("Erreur lors de la création de l'image");
    $largeurDestination = $infos_img[0];
    $hauteurDestination = $infos_img[1];
   }

 //Redimentionnement
 //-----------------
 ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);

 //Création du fichier de sortie
 //-----------------------------
 if(file_exists('tmp.jpg'))
    unlink('tmp.jpg');
 $fh=fopen('tmp.jpg','w');
 fclose($fh);
 ImageJpeg ($im,'tmp.jpg',80);


 //*************************
 //Affiche l'image de sortie
 //*************************

 echo '<a href="javascript:;" onClick="afficheMaxi(\'',$photo_aléatoire,'\')"><img src="tmp.jpg" alt="Image aléatoire" title="Cliquer pour agrandir!" width="150" border="0" /></a>';

 //Envoi du lien par mail à un ami
 echo '<a href="mailto:mail_de_mon_ami@mon_ami.com?subject=Image de la jeunesse de Bottens&bcc=info@jeunessebottens.com&body=Jette un oeil là-dessus... ;o)%0D%0A%0D%0Awww.jeunessebottens.com',$Arrayrep[$nb_aleatoire],'%0D%0A%0D%0AA bientôt,%0D%0A%0D%0AJeunesse de Bottens"><br /><font size="2" color="#FFFFFF">Envoyer à un ami</font></a>';

 //********************
 //Fonction de parssage
 //********************

 function recurse_dir($DIR)
 {
     global $Arrayrep;

     if ($ODIR = opendir($DIR))
     {
         while ($FILE = readdir($ODIR))
         {
           //Ne prend pas en compte les dossiers . et ..
             if(($FILE != ".")&&($FILE != ".."))
             {
                 $TMP = $DIR."/".$FILE ;
                 //Parse également les répertoires et sous-répertoires
                 if (is_dir($TMP))
                     recurse_dir($TMP);
                 else
                 {
                  //explode sépare le string avec le premier paramètre!
 		              $Extension_fichier = explode(".", $FILE);
 		              if(strtoupper($Extension_fichier[1]) == "JPG")
                     {
                      //Ne prend pas en compte les images se terminant
                      if (strtoupper(substr($FILE,-10)) != "_SMALL.JPG")
                          {
                           $Arrayrep[]= $TMP;
                          }
                     }
                 }
             }
         }
     }
     else
     {
      printf ("Impossible d'ouvrir le dossier") ;
     }
 }

 ?>
 
 <!-- *************************************** -->
 <!-- * Affiche source de l'image par popup * -->
 <!-- **************************************** -->
 <script language="Javascript" type="text/javascript">
 function afficheMaxi(chemin)
 	{
 	//Déclaration des variables 
 	var largeur = 0;
 	var hauteur = 0;
 	var Left = 0;
 	var Top = 0;
 
 	//Main
 	i1 = new Image();
 	i1.src = chemin;
 	largeur = i1.width + 50;
 	hauteur = i1.height + 50;
 	Left=(screen.width-largeur)/2;
 	Top=(screen.height-hauteur)/2;
 
 	html = '<html><head><title>Image jeunesse de Bottens</title></head><body leftmargin=0 marginwidth=0 topmargin=5 marginheight=20 bgcolor="#333333"><center><img src="'+chemin+'" border=0 name=image onLoad="window.resizeTo(document.imageTest.width+50,document.imageTest.height+100)"></center></body></html>';
 	popupImage = window.open('','_blank','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=0,resizable=0, width=500, height=375, left='+Left+', top='+Top+'');
 	popupImage.document.open();
 	popupImage.document.write(html);
 	popupImage.document.close()
 	}
 </script>
 



 Historique

06 mai 2006 11:19:55 :
Oups, j'avais oublié de publier la fonction "affiche_maxi()" qui sert à afficher l'image en taille réel par popup. Cette fonction utilise aussi un redimentionnement automatique et un centrage de la fenêtre. Bouillou
09 mai 2006 20:51:03 :
Modification du code en fonction des recommendations de coockiesch (merci à lui ;o)

 Sources du même auteur

Source avec Zip Source avec une capture AJOUTER FACILEMENT DES COMMENTAIRES À VOS PAGE PHP SANS SQL/...
Source avec Zip UPLOAD PHOTO AVEC REDIMENT. PIXELS, KB, ...

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture YM_GALLERIE_MAKER par ym_trainz
Source avec Zip Source avec une capture AJOUTER DES EFFETS DE PERSPECTIVE ET DES EFFETS DE REFLET SU... par zulrigh
Source avec Zip Source avec une capture METTEZ VOS IMAGES OU VOS PHOTOS EN 3D ; EN PERSPECTIVE par zulrigh
Source avec Zip FAIRE DES MINIATURE D'IMAGE, DES PHOTOS POUR LES PROFILS par zulrigh
Source avec Zip GÉNÉRER UN MOT DE PASS ALÉATOIRE par narkos2

Commentaires et avis

Commentaire de momoxe le 06/05/2006 09:03:17

Il manque la fonction javascript affiche_maxi().
@++

Commentaire de Bouillou2 le 06/05/2006 11:21:12

Merci pour ta remarque MOMOXE. J'éspère que ce bout de code te sera utile.

A+,

Bouillou

Commentaire de coockiesch le 06/05/2006 12:10:08

Salut!
Quelques remarques:
- le HTMl est pas top: on ne met pas de majuscules aux balises et on met des " " pour les attributs: border="0"
- tu fais des trucs bizarres: <font color="#FFFFFF"><span style="font-size:10.0pt;font-family:Tahoma;color:white"><b>
--> mélange de CSS & HTML, 2x l'info "blanc" ( color:whote & color="#FFFFFF" ), <b>, ...

Au niveau PHP:
- on préfère ' ' à " " qui est moins rapide

D'une manière générale, ton script est utile si il y a peu d'images et peu de visiteurs, sinon, tu vas faire exploser la charge CPU du serveur... Je trouve dommage de parcourir tout le serveur à chaque fois, je serais plutôt passé par une BDD avec ta fonction pour la remplir. Surtout que y'a des tests qui prennent du temps qui sont faits pour chaque fichier, genre: if (strtoupper(substr($FILE,-10)) != "_SMALL.JPG")

Donc voilà. Utile, oui, mais de manière limitée, je pense.

@++

R@f

Commentaire de Bouillou2 le 06/05/2006 12:25:20

Bonjour,

Je trouve ta remarque intéressante. Je ne possède pas de BD et le but de ce script est de ne pas gérer manuellement une liste de photos présentent sur le site pour un affichage aléatoire.

Cependant, je pense qu'une solution serait de créer cette liste automatiquement une fois par jour (par le premier internaute du jour) et de l'utiliser pour extraire le lien d'une photo pour l'afficher.

De ce fait, la charge CPU du serveur ne pourrait pas être saturée et la page plus rapidement chargée.

Merci,

Bouillou

Commentaire de coockiesch le 06/05/2006 12:28:28

Salut!
Oui, ou bien, encore mieux, le script est appelé lors de l'ajout d'une photo, et celle ci est ajoutée à la liste! :)

@++

R@f

Commentaire de lesartsverts le 11/06/2006 11:50:32

Je trouve ce code extrèmement intéressant.
Comment pourrais-je faire pour que le code ne parcoure pas tout le serveur mais uniquement tous les répertoires situés a un endroi préci (et pas les sous rep)

Merci d'avance pour votre attention et votre aide précieuse.

@++

Commentaire de Bouillou2 le 12/06/2006 09:26:42

Salut,

Pour éviter de parser les sous-répertoire, tu peux effacer les lignes 135 -> 137 et 148 qui relance la fonction recurse_dir('.') si le fichier en cours et en fait un dossier.

Pour cibler des dossiers précis, il faut  inclure le chemin de ton dossier en paramètre de la fonction recurse_dir('.') ligne 40. Tu devrais pouvoir aussi ajouter à la suite de cette ligne autant de "recurse_dir('.')" que tu veux pointant sur les dossiers que tu veux mais je n'ai pas testé.

Je te modifierai tout ça si ça ne fonctionne pas.

N'oublie pas de noter le script ;o)

A+,

Bouillou

Commentaire de le ptit gob le 03/07/2006 12:55:47

bonjour j'aime bien ton prog, mais j'ai un probleme à la ligne
77:#  $source = imagecreatefromjpeg($photo_aléatoire);
Voilà le résultat:
Fatal error: Call to undefined function: imagecreatefromjpeg()
Merci pour ta futur explication,

Merci et à bientôt,
le ptit gob

Commentaire de Bouillou2 le 03/07/2006 15:19:17

Salut,

L'utilisation du JPG nécessite GD lib 2. C'est une exension php à ajouter manuellement "php_gd2" dans EasyPHP si tu tests en local.

A+,

Séb

Commentaire de le ptit gob le 03/07/2006 15:35:19

Salut c'est encore moi bah finalement je fais plus simple je la garde en taille originale et je la diminue

Voilà merci quand même.
A+

Commentaire de le ptit gob le 03/07/2006 15:36:56

Merci Bouillou2 pour ta réponse si rapide que je l'avais même pas vu quand j'ai réécris.
merci beaucoupo à toi

Commentaire de joshcom le 26/08/2007 04:09:43

Merci bien pour ce script PHP de photo j'ai déja un avec java Script  mais je crois que c'est rapid avec PHP
lol
Bouillou2 Bouillou2 Bouillou2 Bouillou2

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ftp getimagesize [ par d_alma ] Bonjour, Quand j'utilise la fonction: $info=getImageSize('ftp://machin/truc/photo.jpg'); le message suivant apparaît: Warning Pb avec getimagesize [ par babid ] Salut, En fait mon problème vient de la fonction getimagesize, l'erreur est : Warning: getimagesize : Unable to open ....Pour situer, je travaille en PHP [ par nino69 ] Bonjour, j'ai un probl&#232;me avec mon script:Ma requ&#234;te:&nbsp;$query = "SELECT jet_clients.*, jet_photos.* FROM jet_clients LEFT JOIN jet_photo tableau associatif ? [ par nino69 ] Bonjour,J'ai une variable php:1)&nbsp;&nbsp;&nbsp;$nom_photo;Qui contient le nom d'un fichier jpg (exemple: photo05.jpg)j'ai un tableau qui contient u Affichage presque aléatoire! [ par wynelle ] Bonjour,A partir d'une table MySQL avec id, photo, commentaires,... je souhaite lancer une requ&#234;te qui affichera une SEULE photo + son commentair Upload Image [ par piep14 ] Bonjour, je dois faire un upload d'une photo. J'ai donc fait ceci :&nbsp;&nbsp;&nbsp;&lt;?&nbsp;&nbsp;&nbsp;$date = date('Y/m/d H:i:S');&nbsp;&nbsp;&n [photo] comment faire un slideshow du type de darty ! [ par floxone ] salut, salut,Je vous explique mon probl&#232;me : Ca fait un moment que je navigue sur le web pour trouver un script simple et efficace, mais surtout Format affichage imposé mais réponse aléatoire! [ par wynelle ] Bonjour et merci&nbsp;&#224; Anthomicro pour ses pr&#233;c&#233;dents conseils qui m'ont permis d'en arriver &#224; ce point... et l&#224;, je coince Up-load de 2 photos [ par jaco13 ] Bonjour!Voici le code de la page "ajoutvehicule1.inc.php" d'un site de voitures. La partie en noire est la partie avec la requ&#234;te qui sert &#224; upload d'images [ par progDev ] Salut, Voil&#224;, j'ai un probl&#232;me avec l'upload... J'ai trouv&#233; pas mal de script &#224; droite &#224; gauche mais &#231;a ne fonctionne p


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 : 0,562 sec (4)

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