Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1990 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème sur l'affichage d'images

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème sur l'affichage d'images

n°1617667
Gakman
http://gakman.free.fr
Posté le 01-10-2007 à 23:46:02  profilanswer
 

Bonjour à tous.
 
Voilà j'essaye de fabriquer une page qui afficher des photos. Bon je tatonne encore beaucoup en PHP... Alors soyez indulgeants, merci :D !
Alors le fonctionnement :
Toutes les pages php sont en racine du site. Les photos sont dans un dossier photos puis classées dans des dossiers ayant eux-mêmes des dossiers et parfois encore un niveau de dossier à l'intérieur.
 
La page index.php possède un lien dans le menu :  

Citation :


<a href="index.php?lang=<?="$lang"?>&amp;rub=photos&amp;saison=07e"><?="$rub_5_2"?></a>


Donc je fait un include de la page rub_photos.php avec comme paramètre saison=07e .
La page rub_photos.php :

Citation :


<p align="center" class="gdtitre">Photos</p>
<hr /><br />
<p>&nbsp;</p>
<p>Voilà la liste des photos. Cliquer sur le dossier voulu pour accéder aux photos ! Bon visionnage ;-) .</p>
 
<?
$saison=$_GET['saison'];
 
function liste($dir){
 if ($_GET[v]) { $v=$_GET[v]; }
 $dossier=opendir($dir);
 while ($fichier=readdir($dossier)) {
  $berk=array('.', '..');
  if (!in_array($fichier,$berk)) {
   $lien="$dir/$fichier";
   $nbrT=count(split("/",$lien))-2;
   //if ($v==$lien) { $here='<span class="here">';$hereEnd='</span>'; } else { $here='<span class="hereOn">';$hereEnd='</span>'; }
   $space="";
   for ($i=1; $i<$nbrT; $i++) { $space.='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; }
   if (is_dir($dir."/".$fichier)){
    //echo $space.'<img src="/tutoriel/rep.jpg" border="0"> '.$here.'<b> <a href="index.php?v='.$lien.'">'.ucfirst($fichier).'</a> </b>'.$hereEnd.'<br />';
    echo $space.'<img src="images/boueeS6.PNG" width="10" height="10" alt="¤" /> <b> <a href="index.php?rub=photos_aff&amp;dossier='.$lien.'">'.ucfirst($fichier).'</a> </b><br />';
    liste("$dir/$fichier" );
   }
  }
 }
}
 
$v=htmlentities($_GET[v]);
 
//$situation=str_replace("./test/","",$v); $situation=str_replace("/"," > ",$situation);
$repertoire='./photos/20'.$saison;
$situation=str_replace($repertoire,"",$v); $situation=str_replace("/"," > ",$situation);
 
echo '<p>';
//liste("./test" );
liste($repertoire);
echo '</p>';
?>
<p>&nbsp;</p>


Simplement elle liste les dossiers présents et en fait un lien qui pointe vers la page rub_photos-aff.php avec comme variable dossier=$lien (déterminé dnas la page) :

Citation :

[/<a href="index.php?rub=photos_aff&amp;dossier='.$lien.'">'.ucfirst($fichier).'</a>quote]
La page rub_photos_aff.php en question :
[quote]<p align="center" class="gdtitre">Photos</p>
<hr /><br />
<p>&nbsp;</p>
 
<?
$lien=$_GET['lien'];
echo '<p>Voilà la liste des photos : '.$lien.'</p>';
 
// START OF PARAMETERS SECTION
$columns=4;                  //number of images per line  
$ratio=5;                    //ratio imageSize / thumbnailImageSize  
$quality=5;                  //thumbnail image quality (0: worst to 100:best)
$scriptname= "test.php";    //filename of this script  
$thumb_dir = "thumb";        //directory created to stored small images
$thumb_prefix = "thumb_";    //prefix for generated images
// END OF PARAMETERS SECTION
 
echo  "<center>\n<P><BR><BR>\n\n";
 
if (isset($_GET['dossier'])){$dossier=$_GET['dossier'];} elseif (empty($dossier)){$dossier='.';}
//$dossier="photos/2007e/Manu/13%20-%20Le%20voyage%20vers%20l'ouest/13_1%20-%20LiJeng/";
 
$mydirectory=$dossier;          //directory in which images are fetched  
$counter=0;
$nbfiles = 0;
$currfile =  "";
$filestab[0] =  "";
 
$handle=opendir($mydirectory);
 
//create a directory for thumbnail images
if (! is_dir($thumb_dir))
{
   mkdir($thumb_dir, 0777);
}
 
while ($currfile = readdir($handle))  
{
   // We get the extension of the current file and keep only image files  
   $extension= strtolower(substr( strrchr( $currfile,  "." ), 1 ));  
   if ($extension== "gif" || $extension== "jpg" || $extension== "jpeg" ||
       $extension== "png" )
   {
   $nbfiles++;
      $currfile = trim($currfile);
      $filestab[$nbfiles] = $currfile;
 
      if ($ishome ==  "" )
      {
         $size = GetImageSize($currfile);
         $width = $size[0] / $ratio;
         $height = $size[1] / $ratio;
         $format = $size[2]; //1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP
 
         $currthumbfile = "./" . $thumb_dir . "/" . $thumb_prefix . $currfile;
         if (! file_exists($currthumbfile))
         {
             //GIF format is not supported anymore by GD lib...
             if ($format == 2) //JPG
                   $im = imagecreatefromjpeg($currfile);
             else if ($format == 3) //PNG
                   $im = imagecreatefrompng($currfile);
             if (!$im)
             {
                 $currthumbfile = $currfile;
             }
             else
             {    
                Imagejpeg($im, $currthumbfile, $quality);
                ImageDestroy($im);
             }
          }
 
          $currfile = str_replace(" ","%20",$currfile); // Allow filenames with space characters
          $currthumbfile = str_replace(" ","%20",$currthumbfile); // Allow filenames with space characters
 
          echo  "<A HREF=$scriptname?ishome=1&filename=$currfile&filenumber=$nbfiles>\n";
          echo  "<IMG SRC=$currthumbfile WIDTH=$width HEIGHT=$height";
          $currfile = str_replace("%20"," ",$currfile); // Clean display of filenames with space characters
          echo " alt=\"Enlarge $currfile\">\n";
          $currfile = str_replace(" ","%20",$currfile);   //Clean display of filenames with space characters
          echo  "</A>\n";
          $counter++;
          if ($counter == $columns)
          {
             $counter = 0;
             echo  "<P><P><BR>";
         }
      }
   }
}
closedir($handle);
 
if ($ishome == 1)
{
   echo  "<P>\n";
   $filename = str_replace(" ","%20",$filename);   // Allow filenames with space characters
   $filename = stripslashes($filename);   // Allow filenames with ' characters
   echo  "<IMG SRC=$filename>\n";
   $display = str_replace("%20"," ",$filename);   // Clean display of filenames with space characters
   echo "<br><b> $display </b><br>";
   echo  "<P><BR>\n\n";
 
   if ($filenumber != 1)
   {
      $prevnumber = $filenumber - 1;
      $filestab[$prevnumber] = str_replace(" ","%20",$filestab[$prevnumber]);   // Allow filenames with space characters
      echo  "[<A HREF=$scriptname?ishome=1&filename=$filestab[$prevnumber]&filenumber=$prevnumber>";
      echo  " << Previous</A>]  \n";
   }
 
   echo  " &nbsp;&nbsp;[<A HREF=$scriptname>Main Page</A>]&nbsp;&nbsp;\n";
   echo  "  \n" ;
   if ($filenumber != $nbfiles)
   {
 
      $nextnumber = $filenumber + 1;
      $filestab[$nextnumber] = str_replace(" ","%20",$filestab[$nextnumber]);   // Allow filenames with space characters
      echo  "[<A HREF=$scriptname?ishome=1&filename=$filestab[$nextnumber]&filenumber=$nextnumber>";
      echo  "Next >></A>]\n";
   }
 
   echo "\n\n";
}
?>


Donc elle doit faire des miniatures des photos du dossier ouvert mais il y a un problème je crois qu'elle travaille en racine au lieu de la faire dans le dossier... Enfin j'ai ce message d'erreur :

Citation :

Warning: getimagesize(100_1647.JPG) [function.getimagesize]: failed to open stream: No such file or directory in /mnt/167/sdb/8/d/amitienw/rub_photos_aff.php on line 50


 
Merci beaucoup de votre aide, je ne trouve pas quoi corriger...


Message édité par Gakman le 01-10-2007 à 23:48:41

---------------
-> http://gakman.free.fr
mood
Publicité
Posté le 01-10-2007 à 23:46:02  profilanswer
 

n°1617762
omega2
Posté le 02-10-2007 à 11:31:23  profilanswer
 

Si ton "Imagejpeg" reçoit un nom de fichier sans indication de dossier alors il va créer l'image dans le dossier courant (et c'est normal)
Si tu veux qu'il cré l'image dans un dossier, il faut lui indiquer en même temps que le nom du fichier, ce qui donne un truc du genre "./mondossier/monimage.jpg" que je te laisses adapter ton code comme il faut.

n°1618097
Gakman
http://gakman.free.fr
Posté le 02-10-2007 à 19:09:53  profilanswer
 

Merci de ta réponse.
J'ai essayé de faire ça :
if (isset($_GET['dossier'])){$dossier=$_GET['dossier'];} elseif (empty($dossier)){$dossier='.';}  
 
$mydirectory=$dossier;          //directory in which images are fetched  
 
La page est ouverte avec comme variable dossier="photos/2007e/Manu/dossier choisi";  
Mais visiblement dans l'exécution du code cette variable directory n'est pas maintenanue, il cherche en racine les images. Mais le message d'erreur met le bon nom des fichiers (donc les trouve) mais dit qu'il ne peut pas les afficher car il ne trouve pas le fichier (car après l'avoir trouvé il semble le chercher en racine).
Le message d'erreur affiche : "getimagesize(100_1647.JPG)" -> le nom de l'image est bon donc, il a trouvé l'image. Mais après il écrit "failed to open stream: No such file or directory"...
Bref il me manque quelque chose mais je ne trouve pas où !!!
 
Merci de votre aide ;) !


Message édité par Gakman le 02-10-2007 à 19:16:00
n°1618141
olivthill
Posté le 02-10-2007 à 22:02:27  profilanswer
 

C'est peut-être à cause de l'espace dans le nom du dossier. Il faudrait faire un  essai en plaçant une image dans un endroit où le chemin d'accès ne comporte pas d'espace.

n°1618266
omega2
Posté le 03-10-2007 à 10:57:02  profilanswer
 

Heu, là, ça n'est plus à la création de la miniature mais à la lecture du fichier d'origine que ça plante.
Quand t'accèdes à un fichier, il faut toujours lui dire où il est. Si tu réfléchis bien avec "getimagesize(100_1647.JPG)", il connait le nom du fichier, mais a part ça, il doit le prendre dans quel répertoire? C'est pas par ce que t'as cherché des noms du fichier plus haut dans le script que tous les fichiers que tu chercheras à ouvrir sont censé y être (dans ton cas si mais c'est un cas particulier). Après tout, le fichier peut très bien être dans un autre répertoire. Par exemple si t'as une image qui te sert de tampon que tu rajoutes sur toutes tes images, il y a peu de chance qu'elle soit dans le répertoire de tes nouvelles images. En plus, s'il y a eu plusieurs recherches, voire même plusieurs recherches imbriquées, (pour manipuler toutes les images d'un répertoire et de ses sous répertoire par exemple) comment elle pourrait savoir à quelle recherche le fichier qu'on veut lui indiquer correspond?  
 
En résumé, quelque soit la fonction où tu donnes le nom d'un fichier pour le manipuler, il faut indiquer également là où il se trouve et si on lui indique pas, il cherchera dans le répertoire courant.

n°1618429
Gakman
http://gakman.free.fr
Posté le 03-10-2007 à 14:58:31  profilanswer
 

Pour le nom des dossiers, j'ai renommé pour qu'il n'y ai plus d'espace ou de caractères spéciaux. Le problème ersiste.
Alors pour l'emplacement des images j'ai essayé de définir avec $dossier le chemin où est l'image mais je n'y arrive pas... Je ne sais pas où le faire ! Je sais que $dossier (ou $mydirectory) pointent le bon dossier, mais je n'arrive pas placer cette variable (du type $currfile=$dossier.$currfile je pense ?).
 
Merci beaucoup, je patauge !  :sweat:  

n°1620016
Gakman
http://gakman.free.fr
Posté le 06-10-2007 à 00:26:16  profilanswer
 

Si jamauis vous voyez où je dois corriger, se serait sympa de me l'indiquer. Meri encore !

n°1636311
Gakman
http://gakman.free.fr
Posté le 04-11-2007 à 11:53:30  profilanswer
 

Je ne trouve pas la solution :'( .
J'ai essayé d'ajouter $dossier.$currfile à la place de $currfile mais ça ne marche pas...
 
Merci de votre aide ! :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème sur l'affichage d'images

 

Sujets relatifs
problème Java Script et cssProbleme de Pied de Page d Excel par Automation, C++ ( VS6)
Probleme affichage images avec script PHP[HTML/CSS] Problème affichage d'images
[resolu] problème d'affichage d'images sous IEProblème d'affichage d'images
Problème de l'affichage d'images avec Internet base vitesseProblème d'affichage des images sur un forum phpBB
Probleme avec l affichage des images 
Plus de sujets relatifs à : Problème sur l'affichage d'images


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR