Buonasera a tutti, ho trovato in rete questa galleria immagini da mostrare sul proprio sito ma avrei bisogno di voi.. non riesco proprio a venirne a capo.. vorrei implementare quattro funzioni:
- Tasto download di fianco alla foto.
- L'anteprima delle foto non in dimensioni reali ma piccole, circa 128x128 ( quello presente non funziona).
- Apertura foto al passaggio del mouse o cliccandoci sopra senza cambiare indirizzo pagina.
- Aggiungere altri formati di foto.
Grazie a tutti!
PAGINA galleria.php
PAGINA template.php
- Tasto download di fianco alla foto.
- L'anteprima delle foto non in dimensioni reali ma piccole, circa 128x128 ( quello presente non funziona).
- Apertura foto al passaggio del mouse o cliccandoci sopra senza cambiare indirizzo pagina.
- Aggiungere altri formati di foto.
Grazie a tutti!
PAGINA galleria.php
PHP:
<?php
// Configurazione della galleria
// ---------------------------------
// percorso della cartella contenente le immagini ORIGINALI
$path_immagini = "upload/immagini/";
// percorso della cartella che dovrà contenere le anteprime
$path_anteprime = "upload/immagini/";
// numero di righe e colonne della tabella che mostrerà le anteprime
$num_righe = 3;
$num_colonne = 3;
// larghezza ed altezza massima delle anteprime
$larghezza_ant = 150;
$altezza_ant = 150;
// ---------------------------------
// provo ad "aprire" la cartella delle immagini originali
$handle = @opendir($path_immagini);
// se c'è stato un errore...
if(!$handle)
die ("Errore nell'apertura della cartella delle immagini '$path_immagini'");
// inizializzo l'array che conterrà i nomi delle immagini
$immagini = array();
// memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..' && strpos($file,'.png'))
{
if(strpos($file,'.png'))
$immagini[] = $file;
}
}
// metto in ordine alfabetico le immagini
sort($immagini);
// calcolo il numero dell'ultima pagina
$ultima_pagina = ceil(count($immagini) / ($num_righe * $num_colonne));
// decido che pagina mostrare
if(isset($_GET['pag']))
{
// se è nell'URL è presente un numero di pagina
if(is_numeric($_GET['pag']) && $_GET['pag'] > 0 && $_GET['pag'] <= $ultima_pagina)
{
// se il numero di pagina indicato è lecito
$pag_corrente = $_GET['pag'];
}
else
{
// nell'URL è stato messo un numero di pagina errato.
// l'utente sta "giocando" con il nostro script !!!
header('location: galleria.php?pag=1');
exit;
}
}
else
{
// se non è stato specificato nulla via URL mostro la prima pagina
$pag_corrente = 1;
}
// quale sarà la prima immagine da mostrare nella pagina corrente?
$immagine_iniziale = ($pag_corrente-1) * $num_righe * $num_colonne;
// Costruisco dei link per accedere alla pagina precedente e successiva (se esistono!)
$navigatore = '';
if($pag_corrente > 1)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente-1).'"><< Precedente</a> ';
if($pag_corrente < $ultima_pagina)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente+1).'">Successiva >></a>';
// adesso devo costruire la tabella che conterrà le anteprime
$tab_immagini = '';
// il primo cliclo FOR è per costruire le righe
for ($i = 0; $i < $num_righe ; $i++)
{
// se all'inizio di una riga mi accorgo che non ci sono più immagini da visualizzare
// allora interrompo le iterazioni
if(!isset($immagini[($i*$num_colonne) + $immagine_iniziale]))
break;
// apro la riga corrente
$tab_immagini .= '<tr>';
// il secondo ciclo FOR serve invece a costruire le singole celle apparteneti ad una riga
for ($j = 0; $j < $num_colonne; $j++)
{
// l'indice dell'immagine da mostrare nella cella corrente
$indice = ($i*$num_colonne) + $j + $immagine_iniziale;
// se esiste una immagine con questo indice (potrebbero essere finite!)
if(isset($immagini[$indice]))
{
// controllo che esista l'anteprima per l'immagine corrente
// in caso contrario la creo "al volo"
if(!file_exists($path_anteprime.$immagini[$indice]))
crea_anteprima($immagini[$indice],$larghezza_ant,$altezza_ant,$path_immagini,$path_anteprime);
// ricavo le dimensioni dell'anteprima corrente
list($width, $height) = getimagesize($path_anteprime.$immagini[$indice]);
// non mi resta che creare i tag per il link, l'immagine ed i nome dell'immagine
$cella = '<a href="'.$path_immagini.$immagini[$indice].'">';
$cella .= '<img src="'.$path_anteprime.$immagini[$indice].'" alt="'.$immagini[$indice].'" height="'.$height.'" width="'.$width.'">';
$cella .='<br><p align="center">' . $immagini[$indice] . '</p>';
$cella .='</a>';
}
else
{
// sono finite le immagini! Lascio la cella vuota
$cella = ' ';
}
// metto il contenuto della cella appena creata nella tabella
$tab_immagini .= '<td class="cella_immagine" align="center" valign="middle">'. $cella . '</td>';
}
// chiudo la riga corrente
$tab_immagini .= '</tr>';
}
// tutto il contenuto "dinamico" è stato preparato, devo solo caricare il template che si occuperà di mostrarlo
// per proteggermi dal caricamento del template esternamente allo script definisco una costante...
define('LOAD_TEMPLATE',1);
include('template.php');
// fine dello script
exit;
// funzione per la creazione delle anteprime
function crea_anteprima($nome_immagine,$larghezza_anteprima,$altezza_anteprima,$path_immagini,$path_anteprime)
{
// ricavo la dimensione dell'immagine originale
list($larghezza_orig, $altezza_orig) = getimagesize($path_immagini.$nome_immagine);
if ($larghezza_orig < $altezza_orig) {
$larghezza_anteprima = ($altezza_anteprima / $altezza_orig) * $larghezza_orig;
} else {
$altezza_anteprima = ($larghezza_anteprima / $larghezza_orig) * $altezza_orig;
}
// creo una nuova immagine, che conterrà l'anteprima
$image_p = imagecreatetruecolor($larghezza_anteprima, $altezza_anteprima);
// carico l'originale
$image = imagecreatefromjpeg($path_immagini.$nome_immagine);
// metto nella nuova immagine la "riduzione" dell'originale
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $larghezza_anteprima, $altezza_anteprima, $larghezza_orig, $altezza_orig);
// salvo l'anteprima
imagejpeg($image_p, $path_anteprime.$nome_immagine);
}
?>
PAGINA template.php
PHP:
<?php
if(!defined('LOAD_TEMPLATE'))
exit('Accesso diretto non consentito!');
?>
HTML:
<head>
<title>Galleria immagini</title>
</head>
<body>
<table border="0" align="center" cellpadding="5" cellspacing="0" id="main_tab">
<tr>
<td>
<table width="100%" border="0" cellspacing="5" cellpadding="5" id="header_tab">
<tr>
<td><div align="left">Pagina <?php echo $pag_corrente?>/<?php echo $ultima_pagina?> </div></td>
<td><div align="right"><?php echo $navigatore?></div></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<?php echo $tab_immagini?>
</table></td>
</tr>
</table>
</body>
</html>
Ultima modifica: