|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GALERIE PHP SANS BDD, AVEC CRÉATION DE VIGNETTES
Information sur la source
Description
Ceci est une galerie en php, qui ne nécessite pas de base de donnée. On peut choisir le nombre d'images à afficher par pages, et celles-ci sont redimensionnées.
Source
- <div align='center' style='width:550px; margin-left:auto; margin-right:auto;'>
- <?php
-
- if (function_exists('ini_set'))
- ini_set("memory_limit",'64M'); // la création de vignettes peut-être lourde...
-
-
- // VOUS POUVEZ MODIFIER CETTE PARTIE SELON VOS PRÉFÉRENCES:
- $folder = 'img'; // Dossier contenant les images
- $mini = 'mini'; // Dossier contenant les miniatures
- $nbimg = 20; // Nombre d'images par page
- $hautmini = 75; // Hauteur des miniatures
- $largmini = 100; // Largeur des miniatures
- $larg = 600; // Largeur de l'image
-
-
- if (!isset($_GET['galerie']) AND !isset($_GET['img'])) // Si on ne cherche pas à afficher une galerie ni une image particulière...
- {
-
- $i = 0;
- echo '<h3>Galeries</h3><table><tr>';
-
- $files = scandir($folder);
-
- if ($files)
- {
- @$max = count($files);
- $i = 0;
- $j = 0;
- while($i < $max)
- {
- if ($files[$i] != '.' AND $files[$i] != '..' AND $files[$i] != 'Thumbs.db' AND $files[$i] != 'perso')// par exemple, on affichera pas le contenu du dossier "perso"
- {
- $thumb = array();
- $thumb = scandir($folder . '/' . $files[$i]);
-
- echo '<td align="center">';
- echo '<a href="galerie.php?galerie=' . $folder . '/' . $files[$i] . '" target="_self">';
- echo '<img src="' . $folder . '/' . $files[$i] . '/' . $mini . '/' . $thumb[2] . '" width="130" height="100" border="0" alt="' . $thumb[2] . '" />';
- echo '</a><br /><a href="galerie.php?galerie=' . $files[$i] . '/' . $files[$i] . '" target="_self">' . $files[$i] . '</a>';
- echo '</td>';
-
- $j++; // Pour afficher 4 images par lignes.
- if (($j/4) == 1)
- {
- echo '</tr><tr>';
- $j = 0;
- }
- }
- $i++;
- }
- }
-
- echo '</tr></table><br /><br />';
- }
- elseif (!isset($_GET['img'])) // Si on veut afficher une galerie...
- {
-
- $galerie = str_replace($folder . '/', '', $_GET['galerie']); // On extrait le nom de la galerie
-
- echo '<h3>Galerie - ' . $galerie . '</h3>Cliquez sur une image pour la voir en plus grand.<br />';
-
- if (isset($_GET['id'])) // id = page affichée
- $id = $_GET['id'];
- else
- $id = 1;
-
-
- $glop = $id * $nbimg; // Pour la pagination...
- $glup = ($id-1) * $nbimg;
- $row = 0;
-
-
- $files = scandir($folder . '/' . $galerie); // On "scanne" la galerie...
-
- if ($files)
- {
- @$max = count($files); // On compte le nombre de fichiers présents dans le dossier, pour la boucle qui suit.
- $i = 0;
- while($i < $max)
- {
- if ($files[$i] != '.' AND $files[$i] != '..' AND $files[$i] != 'Thumbs.db' AND $files[$i] != 'mini' AND $files[$i] != 'perso')// par exemple, on affichera pas le contenu du dossier "perso"
- {
- $row = $row+1;
- if ($row<=$glop && $row>$glup) // affiche que les images comprises entre [(id -1) * nb images] et [id*nb images]
- {
- if (!file_exists($folder . '/' . $galerie . '/' . $mini . '/' . $files[$i])) // vérifie si une miniature est déjà présente, auquel cas, pas besoin d'en recréer
- {
- if (!file_exists($folder . '/' . $galerie . '/' . $mini)) // Si le dossier des miniatures n'existe pas, on le crée.
- @mkdir ($folder . '/' . $galerie . '/' . $mini, 0755);
-
- $Image = $folder . '/' . $galerie . '/' . $files[$i];
- $ratio = 100;
- // création de la miniature
- $src = imagecreatefromjpeg($Image);
- $size = getimagesize($Image);
-
- if ($size[0] > $size[1])
- {
- $im = imagecreatetruecolor(round(($ratio/$size[1])*$size[0]), $ratio);
- imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]),$ratio, $size[0], $size[1]);
- }
- else
- {
- $im = imagecreatetruecolor($ratio, round(($ratio/$size[0])*$size[1]));
- imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]);
- }
-
- $miniature = $folder . '/' . $galerie . '/' . $mini . '/' . $files[$i];
-
- imagejpeg($im, $miniature);
- chmod($miniature,0755); // CHMOD des vignettes crées
-
- }
-
- $nom = substr($files[$i], 0, strlen($Fichier) - 4); // On extrait le nom de l'image de son nom complet
- echo '<a href="galerie.php?img=' . $folder . '/' . $galerie . '/' . $files[$i] . '" target="_self">';
- echo '<img src="' . $folder . '/' . $galerie . '/' . $mini . '/' . $files[$i] . '" border="0" width="' . $largmini . '" height=' . $hautmini . '" alt="' . $nom. '" onmouseover="document.getElementById(\'titreimg\').style.visibility=\'visible\'; document.getElementById(\'titreimg\').innerHTML = \'' . $nom . '\';" onmouseout="document.getElementById(\'titreimg\').innerHTML = \'<br />\';" /></a>';
-
- }
- }
- $i++;
- }
- }
-
- echo '<br /><div id="titreimg"><br /></div>';
-
- if ($row == 1)
- echo 'Il y a ' . $row . ' image enregistrée';
-
- if ($row == 0)
- echo 'Il n\'y a aucune image enregistrée';
-
- if($row != 1 AND $row != 0)
- echo 'Il y a '.$row.' images enregistrées';
-
- echo '<br /><br />';
-
- if ($id > 1) // Affichage des N* de page
- echo '<a href="galerie.php?id=' . ($id - 1) . '&galerie=' . $galerie . '">[précédent]</a> - ';
- else
- echo '[précédent] - ';
-
- for ($i=1; $i <= ceil($row/$nbimg); $i++)
- {
- if ($i != $id)
- echo '<a href="galerie.php?id=' . $i . '&galerie=' . $galerie . '">' . $i . '</a> ';
- else
- echo '[' . $i . '] ';
- }
-
- if ($id*$nbimg < $row)
- echo '- <a href="galerie.php?id=' . ($id + 1) . '&galerie=' . $galerie . '">[suivant]</a>';
- else
- echo '- [suivant]';
-
- echo '<br /><br /><a href="galerie.php">Retour aux galeries</a><br /></div>';
- }
- else
- {
- echo '<br />';
- $img = $_GET['img'];
-
- $nom = strstr($img, '/');
- $nom = strstr(substr($nom, 1, strlen($nom)), '/'); // Obtenir le nom de l'image: c'est bof, mais j'ai pas trouvé plus simple ;)
- $nom = substr($nom, 1, strlen($nom) - 5);
-
- echo '<a href="' . $img . '" target="_blank" border="0"><img src="' . $img . '" alt="' . $nom . '" width="' . $larg . '" border="0" alt="' . $nom . '"></a>';
- echo $nom . '<br /><br />Les images sont redimensionnées. Pour les voir avec leur taille réelle, cliquez dessus.';
- echo '<br /><br /><a href="javascript:history.back()"><b>Retour</b></a>';
- }
- ?>
- </div>
<div align='center' style='width:550px; margin-left:auto; margin-right:auto;'>
<?php
if (function_exists('ini_set'))
ini_set("memory_limit",'64M'); // la création de vignettes peut-être lourde...
// VOUS POUVEZ MODIFIER CETTE PARTIE SELON VOS PRÉFÉRENCES:
$folder = 'img'; // Dossier contenant les images
$mini = 'mini'; // Dossier contenant les miniatures
$nbimg = 20; // Nombre d'images par page
$hautmini = 75; // Hauteur des miniatures
$largmini = 100; // Largeur des miniatures
$larg = 600; // Largeur de l'image
if (!isset($_GET['galerie']) AND !isset($_GET['img'])) // Si on ne cherche pas à afficher une galerie ni une image particulière...
{
$i = 0;
echo '<h3>Galeries</h3><table><tr>';
$files = scandir($folder);
if ($files)
{
@$max = count($files);
$i = 0;
$j = 0;
while($i < $max)
{
if ($files[$i] != '.' AND $files[$i] != '..' AND $files[$i] != 'Thumbs.db' AND $files[$i] != 'perso')// par exemple, on affichera pas le contenu du dossier "perso"
{
$thumb = array();
$thumb = scandir($folder . '/' . $files[$i]);
echo '<td align="center">';
echo '<a href="galerie.php?galerie=' . $folder . '/' . $files[$i] . '" target="_self">';
echo '<img src="' . $folder . '/' . $files[$i] . '/' . $mini . '/' . $thumb[2] . '" width="130" height="100" border="0" alt="' . $thumb[2] . '" />';
echo '</a><br /><a href="galerie.php?galerie=' . $files[$i] . '/' . $files[$i] . '" target="_self">' . $files[$i] . '</a>';
echo '</td>';
$j++; // Pour afficher 4 images par lignes.
if (($j/4) == 1)
{
echo '</tr><tr>';
$j = 0;
}
}
$i++;
}
}
echo '</tr></table><br /><br />';
}
elseif (!isset($_GET['img'])) // Si on veut afficher une galerie...
{
$galerie = str_replace($folder . '/', '', $_GET['galerie']); // On extrait le nom de la galerie
echo '<h3>Galerie - ' . $galerie . '</h3>Cliquez sur une image pour la voir en plus grand.<br />';
if (isset($_GET['id'])) // id = page affichée
$id = $_GET['id'];
else
$id = 1;
$glop = $id * $nbimg; // Pour la pagination...
$glup = ($id-1) * $nbimg;
$row = 0;
$files = scandir($folder . '/' . $galerie); // On "scanne" la galerie...
if ($files)
{
@$max = count($files); // On compte le nombre de fichiers présents dans le dossier, pour la boucle qui suit.
$i = 0;
while($i < $max)
{
if ($files[$i] != '.' AND $files[$i] != '..' AND $files[$i] != 'Thumbs.db' AND $files[$i] != 'mini' AND $files[$i] != 'perso')// par exemple, on affichera pas le contenu du dossier "perso"
{
$row = $row+1;
if ($row<=$glop && $row>$glup) // affiche que les images comprises entre [(id -1) * nb images] et [id*nb images]
{
if (!file_exists($folder . '/' . $galerie . '/' . $mini . '/' . $files[$i])) // vérifie si une miniature est déjà présente, auquel cas, pas besoin d'en recréer
{
if (!file_exists($folder . '/' . $galerie . '/' . $mini)) // Si le dossier des miniatures n'existe pas, on le crée.
@mkdir ($folder . '/' . $galerie . '/' . $mini, 0755);
$Image = $folder . '/' . $galerie . '/' . $files[$i];
$ratio = 100;
// création de la miniature
$src = imagecreatefromjpeg($Image);
$size = getimagesize($Image);
if ($size[0] > $size[1])
{
$im = imagecreatetruecolor(round(($ratio/$size[1])*$size[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]),$ratio, $size[0], $size[1]);
}
else
{
$im = imagecreatetruecolor($ratio, round(($ratio/$size[0])*$size[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]);
}
$miniature = $folder . '/' . $galerie . '/' . $mini . '/' . $files[$i];
imagejpeg($im, $miniature);
chmod($miniature,0755); // CHMOD des vignettes crées
}
$nom = substr($files[$i], 0, strlen($Fichier) - 4); // On extrait le nom de l'image de son nom complet
echo '<a href="galerie.php?img=' . $folder . '/' . $galerie . '/' . $files[$i] . '" target="_self">';
echo '<img src="' . $folder . '/' . $galerie . '/' . $mini . '/' . $files[$i] . '" border="0" width="' . $largmini . '" height=' . $hautmini . '" alt="' . $nom. '" onmouseover="document.getElementById(\'titreimg\').style.visibility=\'visible\'; document.getElementById(\'titreimg\').innerHTML = \'' . $nom . '\';" onmouseout="document.getElementById(\'titreimg\').innerHTML = \'<br />\';" /></a>';
}
}
$i++;
}
}
echo '<br /><div id="titreimg"><br /></div>';
if ($row == 1)
echo 'Il y a ' . $row . ' image enregistrée';
if ($row == 0)
echo 'Il n\'y a aucune image enregistrée';
if($row != 1 AND $row != 0)
echo 'Il y a '.$row.' images enregistrées';
echo '<br /><br />';
if ($id > 1) // Affichage des N* de page
echo '<a href="galerie.php?id=' . ($id - 1) . '&galerie=' . $galerie . '">[précédent]</a> - ';
else
echo '[précédent] - ';
for ($i=1; $i <= ceil($row/$nbimg); $i++)
{
if ($i != $id)
echo '<a href="galerie.php?id=' . $i . '&galerie=' . $galerie . '">' . $i . '</a> ';
else
echo '[' . $i . '] ';
}
if ($id*$nbimg < $row)
echo '- <a href="galerie.php?id=' . ($id + 1) . '&galerie=' . $galerie . '">[suivant]</a>';
else
echo '- [suivant]';
echo '<br /><br /><a href="galerie.php">Retour aux galeries</a><br /></div>';
}
else
{
echo '<br />';
$img = $_GET['img'];
$nom = strstr($img, '/');
$nom = strstr(substr($nom, 1, strlen($nom)), '/'); // Obtenir le nom de l'image: c'est bof, mais j'ai pas trouvé plus simple ;)
$nom = substr($nom, 1, strlen($nom) - 5);
echo '<a href="' . $img . '" target="_blank" border="0"><img src="' . $img . '" alt="' . $nom . '" width="' . $larg . '" border="0" alt="' . $nom . '"></a>';
echo $nom . '<br /><br />Les images sont redimensionnées. Pour les voir avec leur taille réelle, cliquez dessus.';
echo '<br /><br /><a href="javascript:history.back()"><b>Retour</b></a>';
}
?>
</div>
Conclusion
Pour ce qui est de la mise en page, je vous laisse vous en charger ;) Si vous voulez afficher la galerie en l'appelant via une adresse de ce type: http://site.com/index.php?page=galerie, il faut alors remplacer "galerie.php?id=..." par "index.php?page=galerie&id=...". (id est la page) Merci de choisir cette source !
Historique
- 23 mai 2007 16:38:47 :
- améliorations: liste des pages ([1] 2 3 ...), truc avec opendir :p
- 28 mai 2007 10:23:05 :
- Nouveau: possibilité de mettre plusieurs galeries; chacune est un dossier dans le dossier image.
- 21 mars 2008 19:54:36 :
- - Galerie en un seul fichier,
- Correction, optimisation du code,
- Valide xhtml (pour le peu qu'il y a... ^^),
- Titre de l'image en dessous
- 23 mars 2009 18:23:09 :
- Modification du 23/03/09:
- Changement de la méthode pour lister les images: tri par ordre alphabétique.
- Éclaircissement du code, petits détails corrigés
- Le dossier des miniatures est automatiquement crée si oublié.
- 23 mars 2009 18:25:56 :
- - Changement de la méthode pour lister le contenu des dossiers (scandir au lieu de readir), et donc tri par ordre alphabétique des galeries et images.
- Si le dossier des miniatures est oublié, création automatique.
- Détails corrigés, éclaircissement du code.
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
galerie photo [ par SalahDN25 ]
Salut tous le monde,je voudrais réaliser une galerie photos dans une page qui contien une table à deux colonnes: ma vision est de faire defiler vertic
faire une bouclze sur un fichier contenant des photo et les redimmensionner [ par hannao ]
salut à tous, voilà j'ai un petit code qui redimensionne une photo (contenu dans un dossier) à la fois j'aimerais pouvoir faire une boucle dans le fic
Requête dans des colonnes multiples [ par Francois402 ]
Bonjour à tous Je fais une galerie de photos dynamique avec des clients et employés d'une entreprise. Pour chaque entrée de photo dans le CMS, il y a
Pb upload php [ par ninho44 ]
Bonjour, voila j'ai un petit probleme pour uploader une image et c'est la 1ere fois que je fais ça...je suis un peu perdu.EN fait, je ne vois pas pour
Comment créer une vignette d'un image uploadé [ par vincej ]
création d'un cadre transparent par dessus une image uploader [ par foxprox ]
Bonjour à tous, je viens vers vous à la recherche d'un peu d'aide. Mon employeur aimerait que sur son site, l'internaute puisse uploader une photo
Redimensionnement d'image à l'upload [ par JackAlex ]
Bonjour @ tous,voilà c'est mon premier site en PHP que j'essai de réalisé en piochant des éléments à droite et à gauche. Dans celui-ci j'ai une sectio
galerie photo [ par didine6 ]
Bonjour,Cela fait quelques jours que je cherche un script avec une galerie photo où seul l'administrateur peut déposer un commentaire.J'ai parcouru to
affichage d'image en miniature en php [ par ffrany ]
Bonjour,j'ai crée un site web en php. Et j'ai pas mal d'images à afficher. Mais j'aimerais afficher ces images en php en bande roulantes (ces images d
affichage de plusieurs images sur un meme emplacement [ par yodasky ]
Bonjour je vais faire simple, je voudrai faire ça: http://www.papvacances.fr/location-st-gervais-bains-0419618.htm c'est a dire plusieurs photos minia
|
Téléchargements
Logiciels à télécharger sur le même thème :
|