Forum Clubic

Petit probleme avec une fonction - PHP

Bonjour,

J’explique une peu cke fait le script

j’ouvre un dossier “galerie/”
dans ce dossier, j’ouvre un repertoire à la foi
dans le repertoire ouvert je liste les photos puis creer des miniature dans un dossier mini que je creer dans ce dossier

Et je bloque un peut si quelqun peut m’aider sur le debut
j’ai la fonction qui creer les miniature qui marche , elle creer un dossier mini et les balance dedans
c’est plus la partie ouvrir le dossier galerie puis lister les dossiers s’y trouvant pour pouvoir lancer ma boucle qui miniaturise qui me pose problème.

Si vous pouvez m’aider c’est trés cool

Voici la fonction (elle doit etre bordelique vu le nb d’erreur a l’execution)

la fonction generer miniature fonctionne quand je lui balance en dur les paramettre!

Merci

<?php
/* Creation du repertoire thumbs */
$actuel = getcwd();//on sauvegarde le repertoire actuel
$dir = "./thumbs";
if ( ! chdir($dir) )//si on n'arrive pas a se deplacer dans le repertoire thumbs c'est qu'il n'existe pas
	{
  mkdir($dir);//on le cree alors
	}

chdir($actuel);//on retourne au repertoire original (oui on le fait en _dehors_ de la boucle car sinon bug)

$dir = "./";//HOP on force le retour ici
$dh  = opendir($dir);//on ouvre le fichier
while (false !== ($filename = readdir($dh))) {//on jusqu'a la fin le contenu du repertoire
	$files[] = $filename;//on ajoute chaque nom de fichier dans l'array files
}

sort($files);//on trie par ordre alphabetique
$nombre =1;
$elements = 0;
foreach( $files as $fichier ) //c'est moche, je sais
	{
	if ( ! is_dir($fichier) && getimagesize($fichier) ) //si ce n'est pas un dossier et si l'on arrive a determiner la taille
  {
  $elements ++;
  $filess[] = $fichier;
  }
	}

foreach( $filess as $fichier ) //pour chaque ...
	{
  if ( !file_exists("./thumbs/$fichier" )) //si le thumbnail n'existe pas ...
  	{
  	$src_img = imagecreatefromjpeg("$fichier");
          $origw=imagesx($src_img);
      	$origh=imagesy($src_img);
      	$new_w = 100;
      	$new_h=$new_w;
      	$dst_img = imagecreatetruecolor($new_w,$new_h);
      	imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,$origw,$origh);
      	imagejpeg($dst_img, "./thumbs/$fichier");
  	imagedestroy($dst_img); 
  	imagedestroy($src_img); 
  	}
	}
..
?>

Merci pour ta reponse

j’ai pas encore tester sa mais se script créer les mioniature des image qu’il trouve dans un dossier (si jme trompe pas…) , moi je veux qu’il explore d’ab un repertoire dans lequel les poto sont classée dans des sous-dossier , et qui me renvoit juste en gros le chemin de l’image , puis le chemin de la futur miniature, variable avec lesquel j’appel ma fonction de cretion des miniature.

exemple:
galerie/sous_dossier-1/1.jpg
galerie/sous_dossier-1/mini/1.jpg
puis le script change de dossier quand ya pu de photo dedans et me donne les lien avec les autre sous-dossier:
galerie/sous_dossier-2/1.jpg
galerie/sous_dossier-2/mini/1.jpg

trés bonne soirée

pour browser le dossier utilise des méthodes comme :

$dir = "./";//HOP on force le retour ici
$dh  = opendir($dir);//on ouvre le fichier
while (false !== ($filename = readdir($dh))) {//on jusqu'a la fin le contenu du repertoire
$files[] = $filename;//on ajoute chaque nom de fichier dans l'array files
}

Et pour faire de la récursivité intelligente :

$dir = array('./');
while($dir) {
  $d = array_shift();
  $dh = opendir($d);
  while (false !== ($file = readdir($dh))) {
     if ( $file != '.' && $file != '..' ) {
       $p = $d . '/' . $file;
       if ( is_dir($p)) $dir[] = $p;
       else $files[] = $file;
     }
  }
  closedir($dh);
}

(comment ça c’est pas récursif ? :D)