Publié le 27/05/2012
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 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 5179 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Benjamin dans tuto

Fonctionne nickel, merci pour le script :)

Publié par jerome dans php5

Excellente classe, merci pour ce petit code qui va me permettre de me passer de ma page igoogle qui ferme vendredi

Publié par Ludwig dans tuto

Bonjour,
Il me semble que les plugins de gestion d'images sont payants pour TinyMCE et CKeditor, est-ce toujours le cas ?
Il manque amha l'excellent Xinha dans cette liste, qui lui est Open Sour...

Publié par IB dans tuto

Merci ca marche bien.

Publié par fobec dans java

La boucle de lecture est corrigée et prend en compte l'état pause. Sympa d'avoir signaler l'erreur