// ###################################################
// image gallery by Lorenzo Magon
// ultima modifica 20-09-2008
// ###################################################
function make_miniature($dir_img, $img_limit = 100, $img_width = 230, $didascalia = "no", $style="1") {
// $$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
// 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;
// main URL
$mainURLx=explode('/', $_SERVER['PHP_SELF']);
array_pop($mainURLx);
array_shift($mainURLx);
$mainURL="http://".$_SERVER['HTTP_HOST']."/".implode($mainURLx, '/');
// -----------------
if(!file_exists("$dir_img/")) return false;
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);
}
}
}
}
fwrite($handle_file, "foto_by :: "); // inserisco la riga per l'autore delle foto
}
}
} // fine gestione file delle didascalie
$handle = opendir("$dir_img/"); // leggo il nome delle foto dalla cartella indicata da $dir_img
while($file=readdir($handle)) // inserisco tutti i nomi delle foto in un array
$file_array[] = $file;
foreach ($file_array as $file){ // creazione thumblails per le foto che non ne hanno una
if((substr($file, -4) == ".jpg") && substr($file, 0, 2)!='T_'){ // le miniature devono iniziare per
$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);
}
$all_height_fileT[] = $new_height; // memorizzo le altezze delle miniature per poi trovare quella massima
$fileT="$dir_img/T_$file";
$ricrea_miniatura = false;
if(file_exists($fileT))
{
// verifico se la miniatura ha le dimensioni richieste
list($width_fileT, $height_fileT) = getimagesize($fileT);
if ($width_fileT != $new_width OR $height_fileT != $new_height) $ricrea_miniatura = true;
}
if(!file_exists($fileT) OR $ricrea_miniatura)
{
// creo o ricreo la 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();
}
}
} // fine creazione miniatura
// 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] + $adjust_width;
// -------
unset($file_array); // svuoto l'array dei nomi delle foto
$handle = opendir("$dir_img/");
while($file=readdir($handle)) // leggo di nuovo il nome delle foto per includere le miniature appena create
$file_array[] = $file;
sort($file_array); // ordino l'array dei nomi delle foto
$count = 0;
$div_width = $img_width + $adjust_width;
foreach ($file_array as $file){
if((substr($file, -4) == ".jpg") AND substr($file, 0, 2)=='T_') // includo solo le miniature
{
$_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++;
}
if ($count >= $img_limit) break; // controllo quante miniature visualizzare
} // fine visualizza miniature
// scrivo l'autore delle foto se il valore non e' nullo
if ($description[foto_by] != NULL) print "(".$description[foto_by].")
";
return print $fotogallery;
} // fine make_miniature()
//*****************************************************************
// funzioni aggiunte da Lorenzo
function myrawurlencode ( $TheVal )
{
return str_replace("%2F","/",rawurlencode($TheVal));
}
function myrawurldecode ( $TheVal )
{
return rawurldecode(str_replace("/","%2F",$TheVal));
}
?>
CONTATTI / CONTACTOS:
Direzione / Dirección:
Rodrigo Diaz
APCLAI (Sede legale / Sede legal):
Via Massari, 3/14 – CP 30 175 VENEZIA
Tel.: (+39) 041.5382371 – Tel./Fax: (+39) 041.93.22.86
Cell.: (+39) 347.236.45.35
e-mail:
sito web: www.cinelatinotrieste.org
Sede operativa a Trieste:
c/o Cinema Teatro Miela
Piazza Duca degli Abruzzi, 3 - 34100 Trieste
Tel. (+39) 040.347.76.72 (dall’11 al 19 ottobre - desde el 11 al 19/10)
e-mail: -
Ufficio stampa / Oficina de Prensa:
Maurizio Bekar
Via Pauliana, 10 – 34134 Trieste
tel. (+39) 040.421591 - Fax. (+39) 02.700.406.766
Cell. (+39) 340.60.23.063
e-mail:
sito web: www.bekar.net
Materiali stampa e foto /
Comunicados de prensa y fotos:
www.bekar.net
Il catalogo é stato realizzato da:
Franco Silvestrin
Versione stampabile
Contatti / Contactos Festival (ITA/ESP)
Webmaster
Sito del Festival realizzato da