// ###################################################
// image gallery by Lorenzo Magon
// ultima modifica 11-10-2009
// ###################################################
// adattato a lytebox (e non più lightbox) con supporto ai gruppi di foto
function make_miniature($dir_img, $img_limit = 100, $img_width = 230, $didascalia = "no", $style="1", $album="") {
// $$dir_img e' il percorso della cartella che contiene le foto da visualizzare
// $img_limit e' il numero massimo di anteprime che voglio mostrare
// $img_width e' la larghezza delle miniature, l'altezza viene calcolata di conseguenza
// $didascalia abilita o disabilita la didascalia, si appoggia ad un file di testo
// $style è lo stile css da caricarre per la visualizzazione
// $album è il nome dell'album per poter sfogliare un grupo di foto senza chiudere lytebox
// file con le didascalie, * viene usato per mandare a capo il testo
// se non esiste viene creato in automatico con il nome delle foto
// se vengono aggiunte foto alla dir il file non viene ricreato
$description_file = "description.txt";
// per aggiustare la larghezza del div contenitore, dipende dal valore del bordo dell'immagine impostato nel CSS
$adjust_width = 6;
// verifico se esiste la certalle delle immagini
if(!file_exists($dir_img."/")) return false;
// main URL >>>
$mainURLx=explode('/', $_SERVER['PHP_SELF']);
array_pop($mainURLx);
array_shift($mainURLx);
$mainURL="http://".$_SERVER['HTTP_HOST']."/".implode($mainURLx, '/');
// main URL <<<
// gestione didascalie delle foto >>>
if ($didascalia == "si")
{
// carico tutte le didascalie delle foto...
if($dir_img AND file_exists($dir_img."/".$description_file))
{
$data = file($dir_img."/".$description_file);
$num = count($data);
if($num > 0)
{
for($i=0; $i < $num; $i++)
{
list($file, $descr) = split('::', $data[$i]);
// con trim tolgo i carattteri vuoti all'inizio e alla fine delle stringhe
$description[trim($file)] = trim($descr);
}
}
}
// ...altrimenti creo il file $description_file, se non esiste
else
{
if (isset($dir_img))
{
$handle_file = fopen($dir_img."/".$description_file, 'w');
if(file_exists($dir_img))
{
if ($handle_dir = opendir($dir_img."/"))
{
while($file=readdir($handle_dir))
{
if(preg_match("/\.jpg/i",$file) && substr($file, 0, 2)!='T_')
{
$file_img=rawurldecode($file);
$nome_immagine = $file_img." :: \r\n";
// scrivo il nome nel file description
fwrite($handle_file, $nome_immagine);
}
}
}
}
// inserisco la riga per l'autore delle foto
fwrite($handle_file, "foto_by :: ");
}
}
}
// gestione didascalie delle foto <<<
// leggo il nome delle foto dalla cartella e inserisco tutti i nomi delle foto in un array
$handle = opendir($dir_img."/");
while($file=readdir($handle)) $file_array[] = $file;
// creazione miniature per le foto >>>
// se la minuatura non esiste vie creata, se non è della grandezza richiesta viene ricreata
foreach ($file_array as $file)
{
// le miniature devono iniziare per 'T_'
if((substr($file, -4) == ".jpg") && substr($file, 0, 2)!='T_')
{
$inFile = $mainURL."/".myrawurlencode($dir_img)."/".rawurlencode($file);
// ottengo le dimensioni attuali
list($width_orig, $height_orig) = getimagesize($inFile);
// calcolo le nuove dimensioni
if ($width_orig > $height_orig)
{ // se l'immagine e' orizzontale
$new_width = $img_width;
$new_height = (int) (($img_width / $width_orig) * $height_orig);
}
else
{ // se l'immagine e' verticale
$new_height = (int) ($img_width-($img_width / 100) * 20); // -20%
$new_width = (int) (($new_height / $height_orig) * $width_orig);
}
// memorizzo le altezze delle miniature per poi trovare quella massima
$all_height_fileT[] = $new_height;
$fileT="$dir_img/T_$file";
$ricrea_miniatura = false;
// verifico se la miniatura ha le dimensioni richieste
if(file_exists($fileT))
{
list($width_fileT, $height_fileT) = getimagesize($fileT);
if ($width_fileT != $new_width OR $height_fileT != $new_height) $ricrea_miniatura = true;
}
// creo o ricreo la miniatura
if(!file_exists($fileT) OR $ricrea_miniatura)
{
$thumb = imagecreatetruecolor($new_width,$new_height);
$source = imagecreatefromjpeg($inFile);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
imagejpeg($thumb, $fileT, 100); // imagejpeg ( resource_image [, string filename [, int quality]] )
ob_flush();
flush();
}
}
}
// creazione miniature per le foto <<<
// ordino l'array in ordine decrescente
rsort($all_height_fileT);
// ottengo il valore piu' alto di altezza delle miniature
$max_height_fileT = $all_height_fileT[0];
// svuoto l'array dei nomi delle foto
unset($file_array);
// leggo di nuovo il nome delle foto per includere le miniature appena create
$handle = opendir("$dir_img/");
while($file=readdir($handle)) $file_array[] = $file;
// ordino l'array dei nomi delle foto
sort($file_array);
$div_width = $img_width + $adjust_width;
if($album != "") $album = '['.$album.']';
// carico e visualizzo solo le miniature >>>
$count = 0;
foreach ($file_array as $file)
{
if((substr($file, -4) == ".jpg") AND substr($file, 0, 2)=='T_')
{
$_GETdir=myrawurlencode($dir_img);
$fileT="$dir_img/$file";
$file_img=rawurldecode(substr($file, 2));
list($width_fileT, $height_fileT) = getimagesize($fileT);
$nomeImmagine=substr($file_img, 0,-4);
if ($didascalia == "si")
{
// se la desciption non e' vuota la didascalia diventa il nome dell'immagine
if ($description[$file_img] != NULL) $nomeImmagine = htmlspecialchars(stripslashes($description[$file_img]));
$didascalia_text = "
".str_replace("*", "
", $nomeImmagine)."
";
$nomeImmagine = str_replace("*", " ", $nomeImmagine);
}
$fotogallery.= '
';
$count++;
}
// controllo quante miniature visualizzare
if ($count >= $img_limit) break;
}
// carico e visualizzo solo le miniature <<<
// scrivo l'autore delle foto se il valore non e' nullo
if ($description[foto_by] != NULL) print "(".$description[foto_by].")
";
return print $fotogallery;
}
//*****************************************************************
// funzioni aggiunte da Lorenzo
function myrawurlencode($TheVal) {
return str_replace("%2F","/",rawurlencode($TheVal));
}
function myrawurldecode($TheVal) {
return rawurldecode(str_replace("/","%2F",$TheVal));
}
?>
Sezioni del Festival
SEZIONE CONCORSO
Opere di recente produzione inedite per l’Italia provenienti da Argentina, Brasile, Bolivia, Cile, Colombia, Messico, Perú, Repubblica Dominicana, Uruguay, Venezuela...
Tra le opere in concorso:
-
HOMO VIATOR
di Miguel Mato(Argentina)
-
ANDRES NO QUIERE DORMIR LA SIESTA
di Daniel Bustamante
(Argentina)
-
DIAS DE MAYO
di Gustavo Postiglione
(Argentina)
-
DESPLAZAMIENTOS
di Pedro Stocki
(Argentina)
-
CEMENTERIO DE LOS ELEFANTES
di Tonchy Antezana
(Bolivia)
-
EL REGALO
di Cristián Galaz e Andrea Ugalde
(Cile)
-
GRADO 3
di Roberto Artiagoitía
(Cile)
-
NOCHEBUENA
di Camila Loboguerrero
(Colombia)
-
YO SOY OTRO
di Oscar Campo Hurtado
(Colombia)
-
HOY NO SE FIA, MAÑANA SI
di Francisco Avizanda
(Spagna)
-
A TRAVES DEL SILENCIO
di Marcel Sisniega
(Messico)
-
MORENITA
di Alan Jonsson Gavica
(Messico)
-
HERMAFRODITA
di Albert Xavier
(Repubblica Dominicana)