Ouvrir la photo la plus récente sur le site

ppellero Messages postés 22 Statut Membre -  
Ssylvainsab Messages postés 2892 Statut Modérateur -
Bonjour,

Je suis nouveau dans ce forum.
Est-ce que quelqu'un peut m'indiquer un script en PHP ou Javascript pour ouvrir la photo la plus récente du répertoire de mon site contenant les photos venant de ma webcam.
Les photos sont numérotées ex:image0001.jpg.
Quand on appelle la page de la webcam il faudrai que la dernière photo apparaisse et que la page se rafraichisse et recharge la photo qui arrive.
Ceci afin de garder un historique de toutes les photos.
Merci de votre attention.
Configuration: Windows XP
Mozilla 1.7.8

6 réponses

  1. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Bonsoir.

    Est-ce que toutes les images ont le même nom avec seulement le numéro différent ?
    C'est à dire :
    image0001.jpg
    image0002.jpg
    image0003.jpg
    image0004.jpg
    image0005.jpg
    ...

    En PHP, ce script peut marcher je pense :
    <?php
    $i=1;
    $NumeroImage='000'.$i;
    while(file_exists('image'.$NumeroImage.'.jpg'));
    {
      $i++;
       if($i<10)
         $NumeroImage='000'.$i;
       elseif($i<100)
         $NumeroImage='00'.$;
       //en supposant qu'il n'y a pas plus de 999 images.
       else
         $NumeroImage='0'.$i;
    }
    echo 'La dernière image est "image'.$NumeroImage.'.png"';
    ?>

    Ca, il faut le faire au chargement de la page. Comme ca tu peux afficher la dernière image en changeant les paramètres de echo.

    Ensuite, tu peux mettre un script JS qui vérifie si l'image dont le numéro est un de plus que l'image en cours existe, et répète cette fonction toutes les 5 minutes par exemple.
    function AfficherDerniereImage(NumeroImageID,NumeroImageSuivante)
    {
      var Image=document.getElementsByTagName('img')[0];
      var NumeroImage=Image.id;
      var NumeroImageSuivante=NumeroImage+1;
      if(le fichier existe('image'+NumeroImageSuivante+'.jpg'))
      {
        Image.src='image'+NumeroImageSuivante+'.jpg';
        Image.id=NumeroImageSuivante
       }
      setTimeout('AfficherDerniereImage('+NumeroImageSuivante+','+NumeroImageSuivante+1+')',60000);
    }
    setTimeout('AfficherDerniereImage('+NumeroImageSuivante+','+NumeroImageSuivante+1+')',60000);

    Pour le code JavaScript je ne suis pas sur.
    En php, il faut donner un attribut "id" a l'image qui correspond à son numéro.

    Je ne suis pas sur que ca fonctionne, mais a mon avis c'est un début ;-)

    a plus, et bonnes fêtes de fin d'année.
    0
  2. jeanch
     
    bonjour et bonne fête à tous,
    la solution de ssylvain est valable si et seulement si quand tu charges tes photos, les numéros s'incrémentent et se suivent.
    Pour ma part pour récupérer la dernière photo chargée j'utiliserai la fonction filemtime() qui récupère, au format unix la date de la dernière modification:
    ex:
    <?php
    //chemin d'accès à ton dossier image
    $dosImg = "./ton dossier/";
    //initialisation du tableau contenant les informations et le nom de l'image
    $tabImg = array();
    //boucle qui liste ton dossier
    while($fichier = readdir($dosImg))
    {
    //suppression des informations sur le fichier par sécurité
    $fichier = basename($fichier);
    //récupération de la date de dernière modification
    $dateModif = filemtime($fichier);
    $tabImg[0] = $dateModif ;^
    $tabImg[1] = $fichier;//le nom du fichier ici 000x.jpg
    }
    //tri du tableau sur la première colonne
    ksort($tabImg);
    //affichage du tableau
    while(list($time, $img) = each($tabImg))
    {
    echo "<p><a href=\"".$dosImg.$tabImg[1]."\">".$tabImg[1]."</a></p>";
    }
    ?>
    j'ai écrit la fonction à la volée et je ne l'ai pas vérifiée, mais le principe est là.
    Tu auras peut-être besoin de créer une fonction de tri utilisateur
    voir la fonction usort()
    0
  3. jeanch
     
    errata
    dans la boucle d'affichage, utilise les variables de list()
    la première correspond à la clef de tri
    donc ton affichage sera
    echo "<p><a href=\"".$dosImg.$img."\">".$img."</a></p>";
    0
    1. jeanch
       
      errata bis, j'en fais beaucoup ce matin, non mais quand même!
      tu veux la derniere image donc utilise la fonction
      end($tabImg) ; qui te retournera la derniere occurence du tableau
      0
  4. ppellero
     
    OK merci pour vos réponses ça me fait un bon début.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ppellero Messages postés 22 Statut Membre 1
     
    Bonjour et bonne année à tous.

    J'ai résolu mon problème de script avec votre aide.
    Voici ce que j'ai fait et ça marche!!!
    <html>
    <head>
    <title>En direct avec ma webcam</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="refresh" content="20">
    <meta http-equiv="Pragma" content="no-cache">
    </head>

    <body>
    <?php
    // remplis un tableau avec les noms de fichiers d'un dossier
    $handle = opendir('./.');
    while ( $file = readdir($handle) ) {
    if (substr($file,0,5) == "photo" ){
    $tab[] = $file;
    }
    }
    closedir($handle);

    //foreach ($tab as $element) { //pour verifier le contenu du tableau
    //echo "$element\n<br>";
    // }

    $photo = end($tab);

    echo"<img border='1' src='$photo' width=640 height= 480 >";

    ?>

    </body>
    </html>

    Voila j'ouvre cette page dans un popup et c'est bon.
    Si vous pensez améliorer ce code ne vous génez pas:)
    0
  7. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Salut.

    Le JS ne va pas pour recharger l'image sans la page ?
    Car à mon avis c'est un peu lourd de recharger toutes les 20 secondes ;-)

    A propos de l'amélioration du code, voici ce que j'ai fait.
    A mon avis c'est ce qu'il y a de plus optimisé.
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="fr">
    <head>
      <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
      <meta http-equiv="refresh" content="20">
      <meta http-equiv="Pragma" content="no-cache">
      <title>En direct avec ma webcam</title>
    </head>
    <body>
    <?php
    //rempli un tableau avec les noms de fichiers d'un dossier
    $handle=opendir('./.');
    while($file=readdir($handle))
    {
      if(substr($file,0,5)=='photo')
        $tab[]=$file;
    }
    closedir($handle);
    
    $photo=end($tab);
    echo'<img style="border-width:1px;width:640px;height:480px" src="',$photo,'">';
    ?> 
    </body>
    </html>


    a plus
    0