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...
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: