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

FastImageGallery, script php de Galerie Photo

1116_imagegalleryComment partager facilement des photos en ligne ?

FastImageGallery 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.


Source du script FastImageGallery
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

A lire aussi

Résumé de la rubrique
Catégorie
php5 / class / image
Mise a jour
27/05/2012
Visualisation
vu 1177 fois
Public
Internaute
Auteur de la publication
Fobec
Fobec
Partager sur les réseau sociaux