Tutoriel : comment faire une galerie en php ?
Posté: 09 Aoû 2005 15:52
Bien, ryoko m'a demandé comment on faisait une galerie.... autant que tout le monde en profite, alors voici un petit script qui va vous faciliter la vie....
Je vous explique :
* il faut que vous activiez la librairie graphique gd : pour les utilisateurs de free, c'est deja activé. Pour les autres, ceux qui utlisent easyphp : cliquez sur l'icone d'easyphp dans la barre des taches, cherchez extensions : dans la liste cherchez gd2 : cochez la case, appliquez, fermez, et relancez easyphp : c'est bon....
* pour que le script fonctionne, copiez tout le script dans un fichier php.... ensuite regardez dans les premieres lignes : il y a des choses à parametrer : 4 pour etre exactes : le repertoire ou se trouvent vos images, le nom de la galerie, le nom qui va s'afficher dans votre navigateur, et le nombre d'images que vous voudrez par ligne...
* uploadez ce fichier et créez un repertoire dans lequel vous mettrez toutes vos photos (et mettez le nom du répertoire dans le fichier php sans le "/" final )
* demandez l'affichage de la page php : il va créer les imagettes (maximum de 200 pixel en hauteur ou 200 pixel en largeur)
* ce script gere les fichiers images de type : jpg, jpeg, gif et png...
toutefois, un fichier gif étant le plus souvent animé, je ne vous conseille pas d'utiliser ce script pour des gifs animés.
* le code html est W3C
* l'affichage se fait dans un tableau : mais l'affichage n'est pas le plus difficile à changer si vous n'aimez pas cette solution
* le code est commenté, mais si vous avez la moindre question ou le moindre commentaire, n'hesitez pas
Je vous explique :
* il faut que vous activiez la librairie graphique gd : pour les utilisateurs de free, c'est deja activé. Pour les autres, ceux qui utlisent easyphp : cliquez sur l'icone d'easyphp dans la barre des taches, cherchez extensions : dans la liste cherchez gd2 : cochez la case, appliquez, fermez, et relancez easyphp : c'est bon....
* pour que le script fonctionne, copiez tout le script dans un fichier php.... ensuite regardez dans les premieres lignes : il y a des choses à parametrer : 4 pour etre exactes : le repertoire ou se trouvent vos images, le nom de la galerie, le nom qui va s'afficher dans votre navigateur, et le nombre d'images que vous voudrez par ligne...
* uploadez ce fichier et créez un repertoire dans lequel vous mettrez toutes vos photos (et mettez le nom du répertoire dans le fichier php sans le "/" final )
* demandez l'affichage de la page php : il va créer les imagettes (maximum de 200 pixel en hauteur ou 200 pixel en largeur)
* ce script gere les fichiers images de type : jpg, jpeg, gif et png...
toutefois, un fichier gif étant le plus souvent animé, je ne vous conseille pas d'utiliser ce script pour des gifs animés.
* le code html est W3C
* l'affichage se fait dans un tableau : mais l'affichage n'est pas le plus difficile à changer si vous n'aimez pas cette solution
* le code est commenté, mais si vous avez la moindre question ou le moindre commentaire, n'hesitez pas
- Code: Tout sélectionner
<?
/*
galerie.php par Vally8 (vally8@free.fr) - Aout 2005
Un fichier php qui permet d'afficher des images sous forme de tableaux
Vous pouvez changer le nom du repertoire ou se trouvent les images et le nombre d'images qui s'afficheront par ligne
Vous pourrez aussi changer le titre de la galerie et le nom qui va apparaitre dans la barre de navigation.
*/
// le repertoire où se trouvent les images
$rep = "images";
// le nom qui va apparaitre en tant que titre
$titre_page = "Ma galerie";
// le nom qui apparait dans la barre du navigateur
$titre_navigateur = "Un exemple de galerie";
// le nombre d'images par lignes
$nb = 3;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><? echo $titre_navigateur; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
echo "<h1 align=\"center\">$titre_page</h1>\n";
// les images seront representées en tableaux avec $nb images par ligne : on commence le tableau
echo "<table width=\"100%\">
<tr>
<td> </td>\n";
// on ouvre le repertoire
$d = dir("./$rep");
// si le repertoire ne contient pas de dossier "miniatures", on le cree
if ( ! (is_dir("./$rep/miniatures")))
{
mkdir("./$rep/miniatures");
}
$i = 0;
// on boucle sur les entrées du fichiers
while($fichier = $d->read())
{
// pour récuperer le nom du fichier et son extension
$noms=explode('.',$fichier,2);
$name=$noms[0];
$ext=$noms[1];
// pas de traitement sur le dossier courant ni sur son pere ni sur les eventuels fichiers php
if ($fichier != "." && $fichier != ".." && $ext != "php")
{
// on verifie qu'on a bien affaire à un dossier
if (is_file("./$rep/$fichier"))
{
// si on veut commencer une nouvelle ligne : on ferme la ligne, on met un peu d'espace et on en commence une nouvelle
if (($i%$nb) == 0)
{
echo "
</tr>
<tr>
<td> </td>
</tr>
<tr>\n";
}
// comment s'appellerait la miniature ?
$min = $rep."/miniatures/".$name."_m.".$ext;
// si elle n'existe pas, il faut la créer
if (! (file_exists($min)))
{
ImageRedim ($rep, $fichier);
}
echo "<td align=center><a href =\"$rep/$fichier\" target=\"_blank\"> <img src=\"$min\" alt=\"$fichier\"></a></td>\n";
$i++;
}
}
}
// fermeture du tableau puis du dossier
echo"</tr>
</table>\n";
$d->close();
?>
<p align="center">
<a href="http://validator.w3.org/check?uri=referer" target="_blank"><img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>
</p>
</body>
</html>
<?
function ImageRedim ($rep, $fichier)
{
$filename = "./$rep/$fichier";
// Définition de la largeur et de la hauteur maximale
$width = 200;
$height = 200;
// 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;
}
// on recupere le nom et l'extension du fichier
$noms=explode('.',$fichier,2);
$name=$noms[0];
$ext=$noms[1];
// Redimensionnement
$image_p = imagecreatetruecolor($width, $height);
if ($ext == "jpg" || $ext == "jpeg")
$image = imagecreatefromjpeg($filename);
if ($ext == "png")
$image = imagecreatefrompng($filename);
if ($ext == "gif")
$image = imagecreatefromgif($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// comment va s'appeler la miniature et dans quel dossier sera t'elle ?
$min = "./".$rep."/miniatures/".$name."_m.".$ext;
// il ne reste plus qu'a enregistrer la miniature en fonction de l'extension
if ($ext == "jpg" || $ext == "jpeg")
imagejpeg($image_p,$min);
if ($ext == "png")
imagepng($image_p,$min);
if ($ext == "gif")
imagegif($image_p,$min);
}
?>