Publié le 27/05/2012
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
2 plus
0 commentaires

FastImageGallery, script php de Galerie Photo

Comment partager facilement des photos en ligne ?
Le script FastImageGallery a été développé pour afficher les vignettes et les photos en grande taille pour les personnes de ma famille. Pour ce faire, il suffit d'ajouter des photos dans un répertoire puis d'y ajouter le script ci-dessous.

Principe de la galerie photo

1116_imagegalleryFastImageGallery est un script PHP permettant de gérer une galerie de photo rapidement et sans programmation.

Marche à suivre:
1. uploader les photos sur le serveur,
2. modifier la taille des vignettes et le titre de la page dans index.php,
3. uploader index.php sur le server.

C'est fini !

Présentation du script
rapide : la galerie possède son propre système de cache pour un affichage immédiat,
simple: l'ensemble des outils tient en 1 seul fichier,
extensible: le script peut être intégrer à une page existante ou encore être modifier facilement.

Code source du script photo

L'ensemble des fonctions à savoir la génération de vignette, l'ouverture d'image en plein écran et l'utilisation d'un cache a été regroupé dans un 1 seul fichier. Ainsi, la galerie est simple à maintenir lors des mises à jour des photos que l'on mets en ligne.
Copier le code ci-dessous dans un fichier nommé index.php par exemple
<?php
/**
* Script de Galerie de photo simple et rapide
*
* @author Fobec 05/2012 - FastImageGallery V0.3
* @copyright http://www.fobec.com/php5/1116/fastimagegallery-script-php-galerie-photo.html
*/
 
class FastImageGallery{
 
/**
* Constante à définir
*/
const IMG_WIDTH=133;
const IMG_HEIGHT=100;
const PAGE_TITLE='Démo FastImageGallery V0.3';
/**
*variable interne au script
*/
private $EXT_LIST=array('.jpg');
private $path_home='';
private $path_www='';
private $files=array();
 
/**
* Initialisation du script
*/
public function __construct() {
$this->path_home=getcwd();
$this->path_www=$www=substr( $_SERVER['SCRIPT_URI'],0,strrpos( $_SERVER['SCRIPT_URI'],'/'))."/";
}
/**
* @return string code HTML
*/
public function __toString() {
return $this->toHTML();
}
/**
* Lister les photos dans le répertoire
*/
public function scanDir() {
$dh = opendir($this->path_home);
while (false !== ($filename = readdir($dh))) {
$ext=strtolower(strrchr($filename,'.'));
if (in_array($ext, $this->EXT_LIST) && $filename!='cache.jpg') {
$this->files[] = $filename;
}
}
}
/**
* Supprimer le fichier cache
*/
public function clearCache(){
@unlink($this->path_home.'/cache.jpg');
header("Location: index.php");
exit(0);
}
/**
* Construire le cache image
*/
private function writeThumbCache() {
$bg=imagecreatetruecolor(self::IMG_WIDTH,(self::IMG_HEIGHT 10)*count($this->files));
 
$y=0;
foreach($this->files as $file) {
$img = @imagecreatefromjpeg($file);
$w = @imagesx($img);
$h = @imagesy($img);
 
@imagecopyresampled($bg,$img,0,$y,0,0,self::IMG_WIDTH,self::IMG_HEIGHT,$w,$h);
$y =self::IMG_HEIGHT 10;
}
$cache= $this->path_home.'/cache.jpg';
imagejpeg($bg,$cache);
}
/**
* Construire la page HTML
* @return <type>
*/
private function toHTML() {
if (!file_exists($this->path_home.'/cache.jpg')) {
$this->writeThumbCache();
}
 
$htmlimg='';
$y=0;
foreach ($this->files as $file) {
$p=array('IMGSRC'=>$file,'SPRITEY'=>$y);
$htmlimg.=$this->parseTpl($p,self::HTML_ITEM);
$y =self::IMG_HEIGHT 10;
}
 
$p=array('TITLE'=>self::PAGE_TITLE,'TITLEWIDTH'=>self::IMG_WIDTH,
'HTMLIMG'=>$htmlimg,'IMGCOUNT'=>count($this->files),
'IMGWIDTH'=>self::IMG_WIDTH,'IMGHEIGHT'=>self::IMG_HEIGHT,
'IMGSPRITE'=>$this->path_www.'/cache.jpg');
return $this->parseTpl($p,self::HTML_PAGE);
}
/**
* Remplacer les constantes par les valueurs dans le template
* @param array $params
* @param string $html
* @return string
*/
private function parseTpl($params,$html) {
foreach ($params as $key=>$value) {
$html=str_replace('|'.$key.'|', $value, $html);
}
return $html;
}
 
/**
* Template page HTML
*/
const HTML_PAGE='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>|TITLE|</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
body{margin:0px;padding:0px;}
div.zthumbtitle{padding:2px;overflow: hidden;-o-text-overflow: ellipsis;text-overflow: ellipsis;background:#FaFaFa;border:1px solid #C0C0C0;color#666666;font-size:8pt;text-align:center}
div.thumblist{width:100%;overflow:auto;margin-bottom:20px;}
div.thumb{margin:10px;float:left;border:1px solid #C0C0C0;}
div.thumbimg{width:|IMGWIDTH|px;height:|IMGHEIGHT|px;background-image:url(|IMGSPRITE|);background-repeat:no-repeat;border:0px;cursor:pointer}
div.thumbtitle{background:#FaFaFa;width:|IMGWIDTH|px;overflow: hidden;-o-text-overflow: ellipsis;text-overflow: ellipsis}
div.thumblb{color#666666;font-size:8pt;text-align:center;margin:2px}
div.footer{position:fixed;bottom:0;width:100%;height:15px;background:#333333;color:#ffffff;font-size:10pt;padding:5px}
div.footer_lb{margin-left:auto;margin-right:auto;width:700px;text-align:center}
a.footer{color:#ffffff;margin-left:20px;margin-right:20px}
</style></head>
<body>
<h1>|TITLE|</h1>
<div class="thumblist">
|HTMLIMG|
</div>
<div class="footer"><div class="footer_lb">Gallerie de |IMGCOUNT| images
<a class="footer" href="index.php?cmd=refresh">Rafraichir le cache</a>
<a class="footer" href="http://www.fobec.com/CMS/web/php/fastimagegallery-script-php-galerie-photo_1116.html">FastImageGallery V0.3</a> Copyright 2012 www.fobec.com
</div>
</div>
</body></html>';
 
/**
* Template vignette image
*/
const HTML_ITEM='<div class="thumb">
<div class="thumbtitle"><div class="thumblb">|IMGSRC|</div></div>
<div class="thumbimg" style="background-position:0 -|SPRITEY|px;" onClick="javascript:window.open('|IMGSRC|');return false;">
</div></div>';
}
 
/**
* Executer le la class
*/
$imgGallery=new FastImageGallery();
 
/**
* Supprimer fichier cache des images
*/
if (isset($_GET['cmd']) && $_GET['cmd']=='refresh') {
$imgGallery->clearCache();
}
$imgGallery->scanDir();
echo $imgGallery;
?>
Note:
- le script est limité au format JPEG,
- évolution prévue:
-> protection de la galerie par mot de passe
-> statistique de visite
-> ajout de commentaire
-> support des videos et autres format d'image

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
27/05/2012
Visualisation
vu 3878 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par fobec dans tuto

Pour le script fonctionne, renseigner les constantes $SITE_PATH et $CACHE_PATH. Remplacer les valeurs avec les chemins de son propre site.

Publié par BOKOMBEJEAN dans java

code source excellente,
maintenant comment l'afficher dans une zone de texte ou un champ de texte?

Publié par xnadyx dans php5

Bonjour,

Est ce qu'il y a un autre moyen d'acces aux donnees Microsoft SQL Server?
Je ne trouve pas de tutoriaux sur Internet.

Merci.

Publié par Christof dans CMS

Je pense qu'il y a un problème au niveau de l'affectation du longint "Color" dans la
variable de type byte "r". A mon avis, cela risque de provoquer une erreur de
vérifi...

Publié par Do dans tuto

Et lorsque l'on a un recordset a parcourir ? Que faut-il passer a la vue ? ligne par ligne ou un tableau ? ?
Le PHP est a lui seul deja un systeme de template :
>?php
echo $titre;
?>