creare un tasto sfoglia + far creare una thumbs ?

D_evil1991

Nuovo Utente
10 Nov 2011
4
0
0
palermo
youpeople.it
salve a tutti sto creando un tasto sfoglia per caricare immagini con 3 tipi di estensioni riesco a caricarla sulla cartella images/ xò adesso devo fare in modo che mi creare una thumbs e poi mostrarla a video .. potete controllarmi il codice e dirmi dove sbaglio?
PS: il tutto lo provo in Locale...

PHP:
<?php
//defire una dimensione massima per le immagini caricate in Kb
define ("MAX_SIZE","10000"); 


//Definire la larghezza e l'altezza per l'anteprima 
//notare che questi sono considerati i dimmensions dimmension massimo e non sono fisse, 
// perché dobbiamo mantenere il rapporto immagine intatta o sarà deformato
define ("WIDTH","150");  
define ("HEIGHT","100"); 

//Questa è la funzione che crea l'immagine in anteprima l'immagine da caricare 
// il ridimensionamento sarà fatta considerando la larghezza e l'altezza definita, ma senza deformare l'immagine
 function make_thumb($img_name,$filename,$new_w,$new_h) {
	 
	 //ottiene estensione dell'immagine.
	 $ext=getExtension($img_name);
	 //crea la nuova immagine utilizzando l'apposita funzione di libreria GD
	 if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext)) 		
	 $src_img=imagecreatefromjpeg($img_name);
	 if(!strcmp("png",$ext)) 		
	 $src_img=imagecreatefrompng($img_name);
	 
	 //prende il dimmensions dell'immagine
	  $old_x=imageSX($src_img); 	
	  $old_y=imageSY($src_img);
	  
	  //Prossimo verrà calcolato il nuovo dimmensions per l'immagine in miniatura 
	  // i prossimi passi saranno presi: 
	  // 1. calcolare il rapporto dividendo il dimmensions vecchi con i nuovi 
	  // 2. se il rapporto per la larghezza è superiore, la larghezza rimarrà quello di definire in larghezza variabile 
	  // e l'altezza sarà calcolata in modo che il rapporto non cambierà immagine 
	  // 3. altrimenti useremo il rapporto di altezza per l'immagine 
	  // di conseguenza, solo una delle dimmensions sarà da quelli fissi
	 
	 $ratio1=$old_x/$new_w; 	
	 $ratio2=$old_y/$new_h; 	
	 if($ratio1>$ratio2)	
	 		{ 		
	 $thumb_w=$new_w; 		
	 $thumb_h=$old_y/$ratio1; 
	 } 	
	 
	 else	{ 		
	 $thumb_h=$new_h; 		
	 $thumb_w=$old_x/$ratio2; 
	 }
			
		//Creiamo una nuova immagine con il nuovo dimmensions
	 $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
	 // Ridimensionare l'immagine grande per il nuovo creato uno
	  imagecopyresampled($dst_img,$src_img,150,150,150,150,$thumb_w,$thumb_h,$old_x,$old_y); 
	  
	  // Output l'immagine creata per il file. Ora avremo la miniatura nel file nominato da $ nomefile
	  
	  if(!strcmp("png",$ext)) 	
	  	imagepng($dst_img,$filename); 
		 	else 	
			imagejpeg($dst_img,$filename); 
			
			//distrugge le immagini di origine e di destinazione.
			
			imagedestroy($dst_img);  
				imagedestroy($src_img);
				  }
				  
	  
//Questa funzione legge l'estensione del file. Viene utilizzato per determinare se il file è un'immagine controllando l'estensione
 function getExtension($str) {
	  $i = strrpos($str,".");
	   if (!$i) { return ""; }
	   $l = strlen($str) - $i;
	    $ext = substr($str,$i+1,$l);
		return $ext;}

// Questa variabile è usato come una bandiera. Il valore è inizializzato con 0 (cioè, nessun errore trovato)
// e sarà cambiato a 1 se un errro occures.
// Se l'errore occures il file non sarà caricato.
  		 
		 $errors=0;
//controlla se il modulo è stato presentato
		 if(isset($_POST['Submit']))  {
//legge il nome del file l'utente ha inviato per il caricamento
			 $image=$_FILES['image']['name'];
// se non è vuota
			 if ($image)  	{
//ottenere il nome originale del file dalla macchina del cliente			 
				 $filename = stripslashes($_FILES['image']['name']);
//ottiene l'estensione del file in un formato minuscolo
				 $extension = getExtension($filename); 	
				 	$extension = strtolower($extension);
//if it is not a known extension, we will suppose it is an error and will not  upload the file,  	
//in caso contrario faremo altri test					
					 if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))  		{
//messaggio di errore di stampa
						 echo '<h1>Estensione sconosciuta!</h1>'; 		
						 	$errors=1; 		} 	
								else 		{
//ottenere la dimensione dell'immagine in byt//$_FILES ['image']['tmp_name'] è il nome temporaneo del file 
//in cui è stato memorizzato il file caricato sul server									
									 $size=filesize($_FILES['image']['tmp_name']);
									 $sizekb=filesize($_FILES['image']['tmp_name']);
//confrontare le dimensioni con la dimensione massima che abbiamo definito ed errori di stampa se più grande									
									 if ($sizekb > MAX_SIZE*1024)
									 {	echo '<h1>È stato superato il limite di dimensione!</h1>';
									 	$errors=1;
									}
//daremo un nome univoco, ad esempio, l'ora in formato unix tempo									
										$image_name=time().'.'.$extension;
//Il nuovo nome sarà contenente il percorso completo in cui saranno memorizzati (cartella immagini)									
										$newname="http://forum.mrwebmaster.it/images/$image_name";
// verifichiamo se l'immagine è stata caricata, ed errore di stampa invece										
										$copied = copy($_FILES['image']['tmp_name'], $newname);
										if (!$copied)
										{	echo '<h1>Copia senza successo!</h1>';
											$errors=1;
											
//L'immagine di anteprima nuovi saranno inseriti in images / thumbs / cartella

$thumb_name='images/thumbs/thumb_'.$image_name;
// Chiama la funzione che creerà l'anteprima. La funzione avrà come parametri il nome dell'immagine, il nome delle miniature e la larghezza e l'altezza desiderata per l'anteprima
							$thumb=make_thumb($newname,$thumb_name,300,300); 	
											
											}}}}
					
//Se non ci sono errori registrati, stampare il messaggio di successo											
											if(isset($_POST['Submit']) && !$errors) 
											{ 	
											echo "<h1>Il file caricato con successo!</h1>"; 
											
											echo '<img src="http://forum.mrwebmaster.it/images/thumbs/thumb_'.$image_name.'">';
											} 
											 ?>
                                             
                                             
<!--prossima arriva il modulo, è necessario impostare il enctype al "multipart / frm-data" e utilizzare un tipo di input "file" -->                                             
                                             <form name="newad" method="post" enctype="multipart/form-data"  action=""> 
                                             <table> 	
                                             <tr><td><input type="file" name="image"></td></tr> 	
                                             <tr><td><input name="Submit" type="submit" value="Carica immagine"></td></tr> 
                                             </table>
                                             	 </form>
 
Ultima modifica di un moderatore:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ho corretto in questo modo:
PHP:
<?php
define('MAX_SIZE', 10000);
define('WIDTH', 150);
define('HEIGHT', 100);

function getExtension($fname)
{
    return strtolower(end(explode('.', $fname)));
}

// http://www.onextrapixel.com/2011/02/25/creating-dynamic-image-thumbnails-using-php/
function make_thumb($source, $dest, $nw, $nh)
{
    $stype = getExtension($source);

    $size = getimagesize($source);
    $w = $size[0];
    $h = $size[1];

    switch ($stype) {
        case 'jpg': case 'jpeg':
        {
            $simg = imagecreatefromjpeg($source);
            break;
        }
        case 'png':
        {
            $simg = imagecreatefrompng($source);
            break;
        }
        default:
        {
            return false;
        }
    }

    $dimg = imagecreatetruecolor($nw, $nh);
    $wm = $w / $nw;
    $hm = $h / $nh;
    $h_height = $nh / 2;
    $w_height = $nw / 2;

    if ($w > $h) {
        $adjusted_width = $w / $hm;
        $half_width = $adjusted_width / 2;
        $int_width = $half_width - $w_height;
        imagecopyresampled($dimg,$simg, -$int_width, 0, 0, 0,$adjusted_width, $nh, $w, $h);
    } elseif (($w < $h) || ($w == $h)) {
        $adjusted_height = $h / $wm;
        $half_height = $adjusted_height / 2;
        $int_height = $half_height - $h_height;

        imagecopyresampled($dimg, $simg, 0, -$int_height, 0, 0, $nw, $adjusted_height, $w, $h);
    } else {
        imagecopyresampled($dimg, $simg, 0, 0, 0, 0, $nw, $nh, $w, $h);
    }

    switch ($stype) {
        case 'jpg': case 'jpeg':
        {
            imagejpeg($dimg, $dest, 100);
            break;
        }

        case 'png':
        {
            imagepng($dimg, $dest, 100);
            break;
        }
    }
}

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    $image = isset($_FILES['image']) ? $_FILES['image'] : false;
    $error = false;

    if ($image !== false) {
        $filename = stripslashes($image['name']);
        $extension = getExtension($filename);

        if (!in_array($extension, array('jpg', 'jpeg', 'png'))) {
            echo '<h1>Estensione sconosciuta!</h1>';
            $error = true;
        } else {
            $size = filesize($_FILES['image']['tmp_name']);
            $sizekb = filesize($_FILES['image']['tmp_name']);

            if ($sizekb > MAX_SIZE * 1024) {
                echo '<h1>È stato superato il limite di dimensione!</h1>';
                $error = true;
            }

            $image_name = time() . ".{$extension}";

            $newname = __DIR__ . "/images/{$image_name}";
            var_dump($image['tmp_name'], $newname);
            $copied = copy($image['tmp_name'], $newname);

            if (!$copied) {
                echo '<h1>Copia senza successo!</h1>';
                $error = true;
            } else {
                $thumb_name = __DIR__ . "/images/thumbs/thumb_{$image_name}";
                $thumb = make_thumb($newname, $thumb_name, 300, 300);
            }
        }

        if (!$error) {
            echo '<h1>File caricato con successo!</h1>';
            echo '<img src="http://forum.mrwebmaster.it/images/thumbs/thumb_'.$image_name.'">';
        } else {
            echo '<h1>Impossibile caricare il file.</h1>';
        }
    }
}
else {
    echo <<<EOF
<form name="newad" method="post" enctype="multipart/form-data" action="{$_SERVER['REQUEST_URI']}">
    <table>
        <tr>
            <td><input type="file" name="image" /></td>
        </tr>
        <tr>
            <td><input name="Submit" type="submit" value="Carica immagine" /></td>
        </tr>
    </table>
</form>
EOF;
}
Comunque cerca di scrivere codice più pulito, ci ho messo un bel po' a capirlo.
Inoltre ti consiglio di inserire le tue funzioni in un file esterno e poi includerle.
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
F [PHP] creare tabella e tasto cerca PHP 3
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3
W Creare link di una dato Classic ASP 0
W creare file .jar Java 2
M Creare con il Vb 2010 Il Classico Notes di Windows Vista Visual Basic 1
MarcoGrazia Creare una password Snippet Javascript 0
J creare pagina php di prenotazione PHP 5
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
INTEROPERABILITY Sviluppatrice/formatrice creare APP Offerte e Richieste di Lavoro e/o Collaborazione 0
L Creare una pagina pre-home WordPress 1
G Creare side-bar non visibile da dispositivi mobile HTML e CSS 0
L creare oggetti da una classe tramite un form Javascript 0
Web93 CREARE SITO WEB COMICS CON WORDPRESS WordPress 0
maxnegri Contare sessioni aperte e creare condizione PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
L [CERCO] Creare blog su WordPress con tema Divi Offerte e Richieste di Lavoro e/o Collaborazione 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
R [Photoshop] Creare Azione Photoshop 1
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
A [HTML] Creare sito web per eLearnig HTML e CSS 2
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
R [PHP] Creare sistema random PHP 3
D [PHP] Consigli su come creare form PHP 1
I Creare Qsl radioamatore con testo editabile Presentati al Forum 1
T [PHP] Creare Honeypot per form contatti PHP 10
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
Z Creare VirtualHost Apache2 con PHP? Programmazione 0
max_400 [HTML] Come creare un jpg animata (non gif animata) HTML e CSS 3
A Come creare un framset Sviluppo app per Android 1

Discussioni simili