- Home
- Categorie
- Coding e Sistemistica
- PHP
- Caricamento immagini
-
Caricamento immagini
Ciao 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!