Ciao a tutti, in questi giorni ho visto diversi thread dove veniva chiesto come visualizzare le anteprime delle immagini contenute in diverse directory.
Per chi dovesse in futuro affrontare questo problema propongo questa miniguida, che non vuole assolutamente essere esaustiva sull'argomento.
Il tutto si compone di 3 file:
config.php <-- il file di configurazione
ridimensiona.php <-- il file per effettuare il ridimensionamento
galleria.class.php <-- il file della classe per leggere le directory e creare la tabella
per funzionare correttamente questo script richiede l'uso delle librerie grafiche GD (http://freephp.html.it/articoli/view...sp?id=93&pag=1).
Ora inserite il seguente codice nel vostro file php; se tutto va liscio dovreste ottenre una tabella con le vostre miniature:
codice:
<?php
error_reporting(E_ALL);
require_once("config.php");
require_once("galleria.class.php");
//RICHIAMO ALCUNI PARAMETRI DI CONFIGURAZIONE
define("NUMEROCOLONNE",$numerocolonne);
define("FILE_RIDIMENSIONA",$nomefileridimensiona);
// ISTANZIA LA CLASSE, SPECIFICANDO LE ESTENSIONI CONSENTITE (JPG - GIF - PNG)
$galleria=new galleria(array("jpg","gif"));
// AGGIUNGI LE DIRECTORY CONTENTI LE IMMAGINI
$galleria->leggi_dir("immagini/");
$galleria->leggi_dir("immagini2/");
// CREA LA TABELLA
$galleria->stampa();
?>
---------------------------------------------------------
file config.php
codice:
<?php
$larghezza=200; // LARGHEZZA DELLA THUMBNAIL
$altezza=50; // ALTEZZA DELLA THUMBNAIL
$proporzioni=1; // 1=MANTIENI LE PROPORZIONI, 0=NON MANTENERE LE PROPORZIONI
$qualità=20; // QUALITA' DELLA THUMBNAIL (0=MIN, 100=MAX)
$numerocolonne=4; //NUMERO DI COLONNE PER VISUALIZZARE I RISULTATI
$nomefileridimensiona="ridimensiona.php";
?>
---------------------------------------------------------
file ridimensiona.php
codice:
<?php
// file ridimensiona.php
//
// Marco Barcaro
// 15/12/2004
//
// questa funzione richiede le librerie grafiche GD
//
// Testato con Apache 1.3.29, PHP 4.3.10, GD 2.0.28 su winXP
// Testato con Apache 1.3.26, PHP 4.1.2, GD 2.0 (no supporto x GIF) su Debian
// Testato con Apache 1.3.33, PHP 4.3.9, GD 2.0 su Linux
// Testato con Apache 1.3.31, PHP 4.3.3, GD 2.0 su Linux
// PARAMETRI DI CONFIGURAZIONE
require_once("config.php");
define("LARGHEZZA",$larghezza);
define("ALTEZZA",$altezza);
define("PROPORZIONI",$proporzioni);
define("QUALITA",$qualità);
function ridimensiona($immagine) {
$header=array(1=>"gif",2=>"jpeg",3=>"png");
// RIDIMENSIONAMENTO DELLA FOTO
$dimensioni=getimagesize($immagine);
if ($dimensioni[2] == 1)
$img=imagecreatefromgif($immagine);
if ($dimensioni[2] == 2)
$img=imagecreatefromjpeg($immagine);
elseif ($dimensioni[2] == 3)
$img=imagecreatefrompng($immagine);
$altezza=(PROPORZIONI) ? ceil($dimensioni[1]/$dimensioni[0]*LARGHEZZA) : ALTEZZA;
$im=Imagecreatetruecolor(LARGHEZZA, $altezza);
imagecopyresampled($im,$img,0,0, 0,0, LARGHEZZA,$altezza, $dimensioni[0],$dimensioni[1]);
header("content-type: image/".$header[$dimensioni[2]]);
imagejpeg($im,"",QUALITA);
imagedestroy($im);
}
$immagine=isset($_GET['immagine']) ? $_GET['immagine'] : "";
if(file_exists($immagine))
ridimensiona($immagine);
else
echo "$immagine NON ESISTE!";
?>
---------------------------------------------------------
file galleria.class.php
codice:
<?php
// file galleria.class.php
//
// Marco Barcaro
// 15/12/2004
//
// questa classe richiede le librerie grafiche GD
//
// Testato con Apache 1.3.29, PHP 4.3.10, GD 2.0.28 su winXP
// Testato con Apache 1.3.26, PHP 4.1.2, GD 2.0 (no supporto x GIF) su Debian
// Testato con Apache 1.3.33, PHP 4.3.9, GD 2.0 su Linux
// Testato con Apache 1.3.31, PHP 4.3.3, GD 2.0 su Linux
class galleria{
function galleria($ext_permesse){
$this->ext_permesse=$ext_permesse;
$this->immagini=array();
}
function leggi_dir($path){
// LETTURA DELLA DIRECTORY
if (!is_dir($path))
echo "$path NON E' UNA DIRECTORY VALIDA!";
else {
$d = dir($path);
while ($immagine = $d->read()) {
if ($immagine != "." && $immagine != ".." && in_array(array_pop(explode(".",$immagine)),$this->ext_permesse)){
$this->immagini[]=$path.$immagine;
}
}
$d->close();
}
}
function stampa(){
// PREPARAZIONE DELL'OUTPUT COME TABELLA HTML
$output="<table>\n";
$output.="<tr>\n";
$cont=1;
foreach($this->immagini as $immagine){
$output.="<td><img src=\"".FILE_RIDIMENSIONA."?immagine=$immagine\" alt=\"$immagine\" /></td>\n";
if ($cont % NUMEROCOLONNE == 0)
$output.="</tr><tr>\n";
$cont++;
}
if (($cont-1) % NUMEROCOLONNE == 0)
$output=substr($output,0,-5)."\n";
$numero_immagini=count($this->immagini);
$temp=ceil($numero_immagini/NUMEROCOLONNE)*NUMEROCOLONNE-$numero_immagini;
for ($i=0;$i<$temp;$i++)
$output.="<td> </td>\n";
if ($temp != 0)
$output.="</tr>\n";
$output.="<table>\n";
// OUTPUT DELLA TABELLA
echo $output;
}
}
?>