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 3742 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par MeepMeep dans tuto

Attention, un petit correctif a apporter :
headerContent-type: $header_contenttype charset: UTF-8
Remplacer charset: UTF-8 par charsetUTF-8
La difference est subtile mais susceptible d'etre m...

Publié par makanaki dans logiciel

je veux essayer ce logiciel pour tester les jeux de loto de chez nous

Publié par pidjey dans php5

J'ai bien lu mais c'est vraiment trop fort et trop dur pour le moment, je sais pas vraiment comprendre vos syntaxes, elles sont enormes et moi, je ne suis qu'encore un debutant en PHP et il faudrait p...

Publié par Pierrot dans CMS

Je présume que c'est plutot application.terminate;, le clavier à fourcher, ça m'arrive souvent.
@+