- Home
- Categorie
- Coding e Sistemistica
- Coding
- Caricamento immagini
- 
							
							
							
							
							
Caricamento immaginiCiao a tutti, stò avendo problemi con questo script adattato.. [php] 
 $nomem = "nomeutente";
 $cartella = 'upload/';
 $percorso = $_FILES['img']['tmp_name'];
 $percorso2 = $cartella . $nomem;
 // altre definizioni
 $larghezza=200;
 list($width, $height, $type, $attr) = getimagesize($percorso);
 if($width > $larghezza){
 $nuova_larghezza = $larghezza;
 $nuova_altezza = ($height*$nuova_larghezza)/$width;
 $i = strtoupper(substr($percorso_immagine, -3)); //Estensione del file
 $thumb = imagecreatetruecolor($nuova_larghezza, $nuova_altezza);
 switch ($i) {
 case ?PNG?:
 $source = imagecreatefrompng($percorso);
 break;
 case ?GIF?:
 $source = imagecreatefromgif($percorso);
 break;
 case ?JPG?:
 case ?PEG?:
 $source = imagecreatefromjpeg($percorso);
 break;
 }
 imagecopyresized($thumb, $source, 0, 0, 0, 0, $nuova_larghezza, $nuova_altezza, $width, $height);
 // Elimino la vecchia immagine
 unlink($percorso);
 // Salvo l?immagine ridimensionata
 switch ($i) {
 case ?PNG?:
 imagepng($thumb, $percorso2);
 break;
 case ?GIF?:
 imagegif($thumb, $percorso2);
 break;
 case ?JPG?:
 case ?PEG?:
 imagejpeg($thumb, $percorso2, 75);
 break;
 }
 }
 [/php]e mi dà il seguente errore: Warning: imagecopyresized(): supplied argument is not a valid Image resource in Come mai? Io voglio semplicemente ridimensionare l'immagine temporanea e salvarla con il nome utente.. Non riesco a capire, devo salvare prima per forza l'immagine sul disco? Grazie in anticipo, confido in voi anche questa volta...  
 
- 
							
							
							
							
							Ciao Sovietiko, 
 le funzioni imagecreatefrompng, imagecreatefromgif e imagecreatefromjpeg accettano come parametro un percorso, non puoi passargli altro.
 
- 
							
							
							
							
							
@Thedarkita said: Ciao Sovietiko, 
 le funzioni imagecreatefrompng, imagecreatefromgif e imagecreatefromjpeg accettano come parametro un percorso, non puoi passargli altro.Ciao, per cui devo per forza salvare l'immagine nel percorso e poi dopo usare la funzione e cancellare l'originale.. Posso anche rinominare l'immagine con nome inventato durante il salvataggio? Grazie come sempre, a presto. 
 
- 
							
							
							
							
							Il secondo parametro di imagejpeg, e delle altre per le immagini negli altri formati, indica il percorso in cui salvare il file, ti basta impostare li il nome. 
 
- 
							
							
							
							
							
Allora ho rifatto tutto in questo modo: [php] 
 //Effettuo l' upload dell' immagine...
 $uploaddir = 'upload/';
 $uploadfile = fspace($_FILES['img']['name']);
 $upload = $uploaddir . $uploadfile;//Controllo l' estensione del file 
 (fExt($uploadfile) == 'gif') or (fExt($uploadfile) == 'jpeg') or (fExt($uploadfile) == 'png') or (fExt($uploadfile) == 'jpg');
 // altre definizioni
 dir($uploaddir);
 move_uploaded_file($_FILES['img']['tmp_name'], $upload);ridimensiona_immagine("200", $uploaddir.$_FILES['img']['name']); 
 [/php]Posto anche le funzioni per correttezza [php] 
 function ridimensiona_immagine($larghezza,$percorso_immagine){
 list($width, $height, $type, $attr) = getimagesize($percorso_immagine);
 if($width > $larghezza){
 $nuova_larghezza = $larghezza;
 $nuova_altezza = ($height*$nuova_larghezza)/$width;
 $i = strtoupper(substr($percorso_immagine, -3)); //Estensione del file
 $thumb = imagecreatetruecolor($nuova_larghezza, $nuova_altezza);
 switch ($i) {
 case ?PNG?:
 $source = imagecreatefrompng($percorso_immagine);
 break;
 case ?GIF?:
 $source = imagecreatefromgif($percorso_immagine);
 break;
 case ?JPG?:
 case ?PEG?:
 $source = imagecreatefromjpeg($percorso_immagine);
 break;
 }
 imagecopyresized($thumb, $source, 0, 0, 0, 0, $nuova_larghezza, $nuova_altezza, $width, $height);
 // Elimino la vecchia immagine
 unlink($percorso_immagine);
 // Salvo l?immagine ridimensionata
 switch ($i) {
 case ?PNG?:
 imagepng($thumb, $percorso_immagine);
 break;
 case ?GIF?:
 imagegif($thumb, $percorso_immagine);
 break;
 case ?JPG?:
 case ?PEG?:
 imagejpeg($thumb, $percorso_immagine, 75);
 break;
 }
 }
 }function fSpace($string) 
 {
 return str_replace(" ", "_", $string);
 }//Funzione per ricavare l' estensione di un File 
 function fExt($string)
 {
 //Controllo il file
 $trova_punto = explode(".", $string);
 $estensione = $trova_punto[count($trova_punto) - 1];
 $estensione = strtolower($estensione);// Se non ci sono estensioni if (isset($trova_punto[1]) == FALSE) { return ''; } //Ritorno il valore dell' estensione return $estensione;} 
 [/php]L'immagine originale la salva bene e la cancella.. Però la miniatura non la crea, mi dà il seguente errore: Warning: imagecopyresized(): supplied argument is not a valid Image resource in Come mai? Poi come posso fare in modo che venga dato un altro nome all' immagine? Confido in te dark! Grazie. 
 
- 
							
							
							
							
							Per l'errore fai un var_dump di $source prima della funzione che dà errore. 
 Il nome invece è il secondo parametro di move_uploaded_file.
 TI conviene comunque fare sempre riferimento alla documentazione quando utilizzi queste funzioni, e controllare che stai passando i valori giusti.
 
- 
							
							
							
							
							
Assurdo. Il problema erano gli " delle funziona case.. Difatti la variabile risultava NULL. RIsolto tutto grazie infinite!