<?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
?>