Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    Caricamento miniatura sbagliata

    Devo fare il solito upload delle immagini con annessa creazione miniatura... allora, l'upload dell'immagine originale è perfetto. La miniatura, invece, viene creata nella cartella giusta, ma è una jpeg completamente nera.
    Questo è il codice che ho usato ($file_name è il nome del file-miniatura):


    Codice PHP:
    list($width$height$type$attr) = getimagesize($_FILES['img']['tmp_name']);                   
    // Creo la versione 100*100 dell'immagine (thumbnail)
    $thumb imagecreatetruecolor(100100);
    $source imagecreatefromjpeg($_FILES['img']['tmp_name']);
    imagecopyresized($thumb$source0000100100$width$height);
    imagejpeg($thumb"../upload/immagini/miniature/".$file_name75); 
    Dove sbaglio?

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Credo che devi lavorare sul file dopo averlo spostato dalla directory temporanea in cui viene messo durante l'upload. Fino a quel momento, se non sbaglio, il file è inutilizzabile.

    Quindi, prova spostandolo in una directory con la funzione move_uploaded_file() e, solo allora, dallo in pasto alla libreria GD :)
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Ho fatto degli esperimenti, ma non mi è venuto fuori niente di buono... chiedo soccorso
    Questa è la versione base che avevo io:

    Codice PHP:
    if(@is_uploaded_file($_FILES["img"]["tmp_name"])) {                                        
        if( !@
    move_uploaded_file($_FILES["img"]["tmp_name"], "$upload_dir/$file_name") ){
            
    $errore="Impossibile spostare il file. Controllare l'esistenza o i permessi della directory dove fare l'upload.";
        }else{
            
    // CREAZIONE THUMBNAIL (miniature)
            // Ottengo le informazioni sull'immagine originale
            
    list($width$height$type$attr) = getimagesize($_FILES['img']['tmp_name']);                   
            
    // Creo la versione 100*100 dell'immagine (thumbnail)
            
    $thumb imagecreatetruecolor(100100);
            
    $source imagecreatefromjpeg($_FILES['img']['tmp_name']);
            
    imagecopyresized($thumb$source0000100100$width$height);
            
    imagejpeg($thumb"../upload/immagini/miniature/".$file_name75);
        }                    

    Dove dovrei crearlo il @move_uploaded_file()? Ho provato a metterlo all'interno dell'else, ma evidentemente c'è qualcosa che mi sfugge perchè non funziona...

  4. #4
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Così dovrebbe andare:

    Codice PHP:
    if(@is_uploaded_file($_FILES['img']['tmp_name'])) {
        
    $path_file "$upload_dir/$file_name";                 
        if( !@
    move_uploaded_file($_FILES['img']['tmp_name'], $file_path) ){
            
    $errore="Impossibile spostare il file. Controllare l'esistenza o i permessi della directory dove fare l'upload.";
        }else{
            
    // CREAZIONE THUMBNAIL (miniature)
            // Ottengo le informazioni sull'immagine originale
            
    list($width$height$type$attr) = getimagesize($path_file);                   
            
    // Creo la versione 100*100 dell'immagine (thumbnail)
            
    $thumb imagecreatetruecolor(100100);
            
    $source imagecreatefromjpeg($path_file);
            
    imagecopyresized($thumb$source0000100100$width$height);
            
    imagejpeg($thumb'../upload/immagini/miniature/'.$file_name75);
        }                    


    Una volta che hai spostato il file con la funzione move_uploaded_file() devi lavorare con il file nella nuova posizione, tutto qua :)
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Ottimo! Ora funziona

    Un'ultima cosa: sto cercando di fare in modo che la miniatura non sia "deformata", quindi calcolo le proporzioni dell'altezza e della larghezza in base a quale sia quella più grande.
    Per il calcolo non ci sono problemi.
    Ma ora che ho sostituito i numeri nella funzione imagecreatetruecolor con le variabili non mi carica più la miniatura. Cioè ho sostituito:

    Codice PHP:
    $thumb imagecreatetruecolor(100100);
    imagecopyresized($thumb$source0000100100$width$height); 
    con

    Codice PHP:
    $thumb imagecreatetruecolor($width_small$heigth_small);
    imagecopyresized($thumb$source0000$width_small$height_small$width$height); 
    Questa funzione non prende anche le variabili, solo numeri assoluti??
    Ho provato a stampare $width_small e $height_small (cioè le dimensioni della miniatura), e risultano corrette...

    Se invece lo lascio in questo modo funziona:

    Codice PHP:
    $thumb imagecreatetruecolor(100100);
    imagecopyresized($thumb$source0000$width_small$height_small$width$height); 
    Quindi il problema è su imagecreatetruecolor :master:

  6. #6
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Il problema è senza dubbio nelle variabili che vengono inviate alla funzione imagecreatetruecolor(). Si possono usare, certamente, ma devono anche essere dei numeri interi. Se scrivi qui il codice con cui le hai calcolate posso darti una mano.
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  7. #7
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Originariamente inviato da Sky
    Se scrivi qui il codice con cui le hai calcolate posso darti una mano.
    Forse non serve più. Ho notato che hai scritto in due modi diversi la variabile contenente l'altezza dell'immagine ridimensionata.

    codice:
    $thumb = imagecreatetruecolor($width_small, $heigth_small);
    imagecopyresized($thumb, $source, 0, 0, 0, 0, $width_small, $height_small, $width, $height);
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    E pensare che avevo anche controllato due volte com'era scritto... a volte quando ce li hai sotto al naso non ci fai nemmeno caso

    Grazie, hai risolto ogni mio dubbio, adesso funziona tutto correttamente

  9. #9
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Con le cose che guardiamo più e più volte succede spesso :P

    Di niente
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.