Page 1 sur 1

Boucle while et fonction

Posté : 01 juil. 2006, 08:12
par bunk
Bonjour,

j'ai adapté plusieurs bout de code trouvé sur le forum, je suis en train d'essayé de faire une petite galerie de photos sur un dossier avec création de miniature au préalable, en fait dans ce cas présent je n'ai pas réellement de problème mais surtout une question (que je pose après le code) :

Premiere partie : thumbs.php
<?php

require ("dossier.php");

// Repertoire à scanner (racine)
$rep = "albums/";

// Verification : le dossier racine exitse bien
if (!is_dir($rep)) {
	echo "Le dossier n'existe pas";
	exit();
}

// Verification : le dossier racine à bien les droits en écriture
if (!is_writeable($rep)) {
	echo "Veuiller doner les droits au dossier !";
	exit();
}

// Ouverture du dossier racine
if ($dir = opendir($rep)) {

	while (false !== ($data = readdir($dir)))
	{
		// Test de l'extension jpg et jpeg seulement
		$extension = strstr($data, '.');
		
		if ($extension == ".jpg" || $extension == ".jpeg") {

			if(!is_file($rep . "/150x150/" . $data)) // remplacer is_file par is_dir pour lister que les dossier
			{
			//miniatures($data,$rep); 
			echo $data . "<br />\n";
			} else {
			echo "existe déjà<br />\n";
			}
		}
	}
}

// Fermeture du dossier racine
closedir($dir);
//miniatures("kiosque.jpg",$rep); 
?>
Deuxième partie : dossier.php
<?php

function miniatures($img,$imgpath){

    function img_resize($img,$width,$height,$imgpath){
    
		// Verification : le dossier racine exitse bien
		if (!is_dir($imgpath)) {
			echo "Le dossier n'existe pas (" . $imgpath . ")";
			exit();
		}

		// Verification : le dossier racine à bien les droits en écriture
		if (!is_writeable($imgpath)) {
			echo "Veuiller donner les droits au dossier (" . $imgpath . ")";
			exit();
		}

        // Chemin complet de l'image source
        $filename = $imgpath.$img;
		
        // Repertoire destination de la miniatiure
        $thumbs = $width."x".$height."/";

		// Verification : le dossier racine exitse bien
		if (!is_dir($imgpath . $thumbs)) {
			echo "Le dossier miniature n'existe pas (" . $imgpath . $thumbs . ")";
			exit();
		}

		// Verification : le dossier racine à bien les droits en écriture
		if (!is_writeable($imgpath . $thumbs)) {
			echo "Veuiller donner les droits au dossier miniature (" . $imgpath . $thumbs . ")";
			exit();
		}

        // Cacul des nouvelles dimensions
        list($width_orig, $height_orig) = getimagesize($filename);
        
        if ($width && ($width_orig < $height_orig)){
            $width = ($height / $height_orig) * $width_orig;
        }else{
            $height = ($width / $width_orig) * $height_orig;
        }
        
        // Redimensionnement
        if(!$image_p = imagecreatetruecolor($width, $height)) {
			echo "erreur : imagecreatetruecolor -- Crée une nouvelle image en vraies couleurs ! IMPOSSIBLE";
		} 
		
        if(!$image = imagecreatefromjpeg($filename)) {
			echo "erreur : imagecreatefromjpeg --  Crée une nouvelle image JPEG  à partir d'un fichier ou d'une URL ! IMPOSSIBLE";
		} 

        if(!imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig)) {
			echo "erreur : imagecopyresampled -- Copie, redimensionne, rééchantillonne une image ! IMPOSSIBLE";
		} 

        // Creation de l'image
        if(!imagejpeg($image_p, $imgpath.$thumbs.$img, 100)) {
			echo "erreur : imagejpeg --  Envoie une image JPEG vers un navigateur ou un fichier ! IMPOSSIBLE";
		} 

    }
    
	// Fonction img_resize
    img_resize($img,150,150,$imgpath);
}
?>
Alors la question est la suivante, sachant que ce script fonctionne corectementmais dans la boucle while de thumbs.php je suis obligé de rafraichir la page pour qu'il passe à une image suivante, c'est à dire que si je remplace ca : echo $data . "<br />\n"; par : miniatures($data,$rep); dans le fichier thumbs, je suis obligé de rafraichir pour que les vignette de mes images se fassent une par une.

J'espère que je me suis bien expliqué, si vous avez une réponse...
D'avance merci[/code]