Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 74
  1. #1
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858

    [PILLOLA] visualizzare un'anteprima delle immagini contenute in una o più directory

    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;
    	}
    }
    ?>
    think simple think ringo

  2. #2
    E bravo il Marketto che mi capiti a "fagiuolo". E' un bravo al buio, perche' non ho ancora visto, ma conoscendo la tua precisione le premesse sono ottime.

    Devo sviluppare una cosa con delle immagini e potra' farmi comodo...

    Tanx...



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da piero.mac
    E bravo il Marketto che mi capiti a "fagiuolo". E' un bravo al buio, perche' non ho ancora visto, ma conoscendo la tua precisione le premesse sono ottime.

    Devo sviluppare una cosa con delle immagini e potra' farmi comodo...

    Tanx...


    già, speriamo bene

    è la prima volta che scrivo una cosa di questo tipo, e la possibilità di aver commesso qualche errore mi dispiacerebbe...

    cmq come ho già scritto, la pillola non può assolutamente essere esaustiva, in quanto è aperta a mille personalizzazioni...

    think simple think ringo

  4. #4
    Originariamente inviato da marketto
    già, speriamo bene

    è la prima volta che scrivo una cosa di questo tipo, e la possibilità di aver commesso qualche errore mi dispiacerebbe...

    cmq come ho già scritto, la pillola non può assolutamente essere esaustiva, in quanto è aperta a mille personalizzazioni...

    Nelle righe che si spezzano e vanno a capo ... potresti farlo evitare inserendo qualche spazio in modo che non ci siano piu' di 40 caratteri consecutivi.... ma sono solo un paio...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da piero.mac
    Nelle righe che si spezzano e vanno a capo ... potresti farlo evitare inserendo qualche spazio in modo che non ci siano piu' di 40 caratteri consecutivi.... ma sono solo un paio...
    sistemato
    think simple think ringo

  6. #6
    Originariamente inviato da marketto
    sistemato
    Sto provando.... dovresti forse definire qualcosa con il path.... dove mettere le immagini... mi stampa le croci di s. andrea... nessun errore, ma manca il GET.. ti incollo l'url della proprieta':

    http://127.0.0.1/AAAA/testing/ridimensiona.php?

    manca il GET.... e non vedo da dove dovrebbe arrivare... ma sicuramente son fagiano io...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    niente....

    Non capisco l'uso del file ridimensiona.php

    non ho provato piu' di tanto, ma mi pare che non venga mai interessato dal processo di lavoro.
    codice:
    $nomefileridimensiona="ridimensiona.php";
    define("FILE_RIDIMENSIONA",$nomefileridimensiona);
    $output.="<td>[img].FILE_RIDIMENSIONA.[/img]</td>\n";
    tanto valeva scriverlo direttamente nel src....

    l'html prodotto recita....
    codice:
    <table>
    <tr>
    <td><img src=ridimensiona.php?immagine=foto/amanita_vittadini.jpg /></td>
    <td><img src=ridimensiona.php?immagine=foto/breviset.jpg /></td>
    <td><img src=ridimensiona.php?immagine=foto/calvatia_excipuliformis.jpg /></td>
    <td><img src=ridimensiona.php?immagine=foto/comatus_.jpg /></td>
    <td> </td>
    <table>
    Manca il </tr> di chiusura. Cosa dovrebbe fare? sicuramente sbaglio io, ma non capisco dove.

    Notte..


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    visto che si parla di immagini e di ridimensionamento aggiungo il link alla mia classe in attesa che anche daniele aggiunga il link alla sua

    http://www.devpro.it/code.php?code=51
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Aggiunta al thread in rilievo
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da piero.mac
    niente....

    Non capisco l'uso del file ridimensiona.php

    non ho provato piu' di tanto, ma mi pare che non venga mai interessato dal processo di lavoro.
    ciao, il file ridimensiona.php viene chiamato dalla classe per effettuare il ridimensionamento automatico delle immagini
    codice:
    $output.="<td><img src=\"".FILE_RIDIMENSIONA."?immagine=$immagine\" alt=\"$immagine\" /></td>\n";
    la costante FILE_RIDIMENSIONA riguarda il nome del file specificato nel config.php, casomai qualcuno lo volesse personalizzare.

    ho sistemato la chiusura della riga della tabella, ho scritto un pvt a gm x modificare il codice

    think simple think ringo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.