• User Attivo

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


  • ModSenior

    Ciao Sovietiko,
    le funzioni imagecreatefrompng, imagecreatefromgif e imagecreatefromjpeg accettano come parametro un percorso, non puoi passargli altro.


  • User Attivo

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


  • ModSenior

    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.


  • User Attivo

    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.


  • ModSenior

    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.


  • User Attivo

    Assurdo.

    Il problema erano gli " delle funziona case.. Difatti la variabile risultava NULL.

    RIsolto tutto grazie infinite!