Accueil > > > GALERIE PHP SANS BDD, AVEC CRÉATION DE VIGNETTES
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
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
galerie image [ par djbabou ]
Bonjour à tous ... Me revoici sur codes sources avec une nouvelle quesion: J'ai développé une galerie d'image très simple en pure css/html. En fait,
Galerie photos: Miniature + rognage [ par Kronikerz ]
Bonjour, Je suis à la recherche de 2 scripts: le premier permettant de miniaturiser une image, tout en gardant les proportions. Le second dans le b
Récupération d'un fichier avec Ajax via un formulaire [ par ludi49 ]
Bonjour, Voilà, je développe un site internet web avec la partie back-office. Au début l'administrateur a le choix entre ajouter, supprimer ou modifi
redimensionner une photo lrs de l'upload [ par boubeuch1 ]
Bonjour, Je souhaiterais faire en sorte que quelque soit la taille de l'image d'origine, lorsqu'elle est téléchargé sur le serveur, celle-ci est redi
Ajout de plusieurs image avec "addjpegfromfile" avec ezpdf [ par AcarnanDragoon ]
Bonjour à toutes et à tous, Alors voila mon ptit soucis : J'utilise ezpdf pour créer des pdf de façon dynamique à partir de ma base de données. Le p
Probleme upload image dans mysql [ par vetcho2paname ]
bonjour a tous je travail sur un projet personnel et je suis bloqué sur un problème. j ai creer un formulaire qui permet a un users de telecharger u
Récupération un formulaire avec une photo : impossible [ par chero9000kee ]
Bonjour à tous et merci d'avance pour votre aide !!!!!!!!!! Je tiens à préciser que je suis débutant, et que ça fait 3 jours que j’essaie d'envo
Galerie photo pour mes membres [ par moza2409 ]
Bonjour à tous Voila je suis en train de créer un petit reseau social dedié au sport, je souhaiterais que mes membres puis-ce créer leur galerie photo
Galerie photo en flash avec zone commentaire [ par CamX ]
bonjour je recherche désespérément un code qui me permettrait de mettre sur mon site une galerie de photos laissant la possibilité à chaque visiteur d
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SYSTEME D'AMISYSTEME D'AMI par moza2409
Cliquez pour lire la suite par moza2409
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|