<?php

########################################
# Script par Jérémy Audry (grandpa@altern.org)
# si vous l'utilisez, merci
# de ne pas enlever le présent message :)
########################################

function resize($file) //voici la fonction qui redimensionne les images
{
    $size = getimagesize("fileupload/uploads/$file"); 
    
    # getimagesize() retourne un tableau de 4 éléments.
    # L'index 0 contient la largeur. L'index 1 contient la longueur. L'index 2
    # contient le type de l'image : 1 = GIF, 2 = JPG,
    # 3 = PNG, 5 = PSD, 6 = BMP.
    # L'index 3 contient la chaîne à placer dans les balises
    # HTML : "height=xxx width=xxx"
    # (source www.php.net)    
    $zoom=4;
    $dest_width = ($size[0]/$zoom); //détermine la taille de la miniature, ici l'on désire quelles soient d'un $zoom de leur taille normale
    $dest_eight = ($size[1]/$zoom);

    $src_img = imagecreatefromjpeg("fileupload/uploads/$file");
    $dst_img = imagecreatetruecolor($dest_width,$dest_eight);

    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_eight, $size[0], $size[1]); // la fonction qui redimensionne les photos
    imagejpeg($dst_img, "fileupload/uploads/mini_$file", $zoom*10);
    imagedestroy($src_img);
    imagedestroy($dst_img);    
}

$dir = opendir("fileupload/uploads/"); // on ouvre le répertoire contenant les photos à réduire
#ajout radeff@akademia.ch 2003: ne pas oublier de faire un `chmod 777 pics` avant...

$i = 0; // on initialise le compteur
echo "<table>\n\n"; // on commence le tableau...
$build_fichier = "<table>\n<tr>\n"; //on commence à contruire le fichiers thumbnails.html
while($file = readdir($dir)) // lit le contenu du répertoire des photos
{
$colonne = "    <td valign='middle' align='center'>\n    <a href='http://www.akademia.ch/grobet/pics/fileupload/uploads/$file'><img src='fileupload/uploads/mini_$file' border='0' alt='$file'></a><br>$file\n    </td>\n"; //construit une colonne du tableau

     # la fonction readdir() renvoie aussi "." et ".." ce qui correspond aux répertoires supérieur et inférieur
     # (non? je ne sais pas exactement), donc il faut éliminer ces résultats de $file, ici par une regex qui
     # cherche toutes les valeurs de $file commencant par un point suivi ou non d'autres points, il faut également éliminer
     # les valeurs de $file qui commence par "mini" (dans le cas où des miniatures ont déjà été créer), sous peine
     # de créer les miniatures des miniatures :)
     
     if(ereg("^\.?\.+$", $file) || ereg("^mini", $file)) // on élimine donc les résultats parasites
     {
     unset($file); // on détruit $file
    }
    else // sinon on peut enfin créer les miniatures!
    {
         if ($i%3==0) // si le reste de $i / 3 (le nombre de colonnes désirées) égale 0 et que $i n'en est pas à sa première itération (pour éviter d'avoir une ligne "<tr>" parasite au début, c'est que l'on peut commencer une ligne
         {
         echo "\n<tr>\n"; // on commence une ligne du tableau
         $build_fichier .= "\n<tr>\n"; 
         }
        if($i %3 !=0 OR $i %3 == 0)
        {
        resize($file); // on appel la fonction qui redimensionne les images
        echo "$colonne"; // on affiche une colonne
        $build_fichier .="$colonne";
        }
        $i++; // on incrémente le compteur
        if ($i%3==0) // puisque $i a été incrémenté une ligne plus haut, la condition ci-dessous recevra une valeure de $i différente du début de la boucle, donc on peut fermer la ligne
         {
         echo "\n</tr>\n";
         $build_fichier .= "\n</tr>\n";
        }
    }

}
echo "\n</table>"; // on ferme le tableau
$build_fichier .= "\n</table>";

closedir($dir); // on ferme le répertoire

if ($thumbs = fopen("fileupload/uploads/thumbnails.html", "w+")) // ouvre un nouveau fichier
{
fputs($thumbs, "$build_fichier"); // on insert la variable $build_fichier construite précédement dans le fichier html
}
fclose($thumbs);
echo "\n<br><a href='fileupload/uploads/thumbnails.html'>Lien vers votre fichier de miniatures</a>"; // insère un lien vers le fichier crée

?>

 
info/thumbnails.php.txt · Dernière modification: 2008/11/11 11:37 (modification externe)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki