Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    intercettare le dimensioni di un file

    sto facendo una gestione di upload del file e voglio fare una cosa del genere:

    l'utente può selezionare il file che vuole dal proprio pc e quando preme invio per caricare il file nel gestionale, se questo è troppo grande ottengo questo errore:
    Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to allocate 4684 bytes) in /store/domains/.../functions.php on line 44

    dove alla linea 44 ho:
    $aus=imagecreatetruecolor($dimensione, $dimensione);

    il problema è appunto legato alle dimensioni dell'immagine, perché con immagini "ragionevoli" non ho nessunissimo problema. Sono incappato nell'errore quando ho provato a caricare una jpg di 1Mb

    $dimensione è una variabile equivalente al lato più corto dell'immagine originale.
    In quanto mi creo in automatico anche le thumbnail che corrispondono ad un quadrato che ha come dimensioni il lato più corto dell'originale. Poi mi ridimensiono queso quadrato e ho la mia bella thumbnail contenente un quadrato nel quale ho l'immagine parziale.

    Sapete mica come potrei fare ad intercettare le dimensioni quindi del file selezionato e in caso queste eccedano fare in automatico un resize? il resize lo vorrei fare portando il peso a 100kb...

    Posso farlo o devo per forza passare le dimensioni? in caso io debba passare le dimensioni...come faccio a sapere che dimensioni dare per non eccedere nei miei 100kb? dò dimensioni a caso e poi riverifico finché l'immagine non pesa meno di 100kb? se fosse così non ci sarebbe un dispendio enorme di memoria che mi porterebbe comunque ad avere quel fatal error?^^



    grazie mille per qualsiasi aiuto!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    non vorrei fosse impostato il max upload consentito nel php.ini
    ora però non ricordo la voce che devi ricercare per verifiche...
    Soluzioni Hosting
    http://www.crabservice.com

  3. #3
    Devi modificare il php.ini alla voce memory_limit, perchè quando lavori con le gd2 devi considerare che il tuo script occupa non la dimensione del file ma la larghezza x la lunghezza x i bit di colore dell'immagine, quindi aumenta la dimensione dei Mb

  4. #4
    Prima dell'upload in php credo che sia impossibile sapere le dimensione del file, per il tuo problema invece guarda qui: Errore con immagini di grandi dimensioni

  5. #5
    e dato che ci sei controlal anche
    max_upload_size
    Soluzioni Hosting
    http://www.crabservice.com

  6. #6
    si si il parametro del php ini lo so qual era da modificare, ma forse mi ero spiegato male...


    io non voglio modificare nessun parametro del php.ini proprio per evitare di avere immagini di grosse dimensioni sul server, perché se lo setto all'infinito ok che non ho nessun errore, ma di sicuro ci sarà qualcuno che mi intasa il server com bmp di 10Mb e non è bello


    ora dò un'occhiata al link di margherite, grazie comunque a tutti per le risposte velocissime
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    ah ok, anche il link mi dà le stesse vostre informazioni...pensavo diversamente.




    comunque, cerco di spiegare meglio il mio problema.

    Ho una gestione immaigni all'interno di un catalogo elettronico dove le uniche foto che vengono caricate sono quelle dei prodotti.
    io carico in ogni caso la foto originale ( che andrà fatta vedere poi in esploso ) e l'upload va a buon fine, anche con quel file che ho selezionato io da 1Mb.

    Poi una volta fatto l'upload ci sono diverse operazioni da fare e vi scrivo qui il codice che uso:
    Codice PHP:
    list($width$height)=getimagesize($dir.$suffisso.$fileNomeDest.".".$fext);

    $dimensione=($width<$height)?$width:$height;
            
    // caricamento immagini
    $source=imagecreatefromjpeg($dir.$suffisso.$fileNomeDest.".".$fext);
    $aus=imagecreatetruecolor($dimensione$dimensione);
    $thumb=imagecreatetruecolor($thumbHeight,$thumbWidth);

    // copio l'immagine originale in un'immagine "di passaggio"
    imagecopy($aus,$source,0,0,0,0,$dimensione,$dimensione);
            
    // resize e salvataggio
    imagecopyresized($thumb$aus0000$thumbWidth$thumbHeight$dimensione$dimensione);
    imagejpeg($thumb,$dir.$suffisso.$fileNomeDest."th.".$fext,80);
            
    // distruzione delle immagini e liberazione della memoria utilizzata
    imagedestroy($thumb);
    imagedestroy($source);
    imagedestroy($aus); 
    penso non ci sia da commentare ulteriormente il codice sopra dice tutto da solo

    comunque al momento del caricamento mi creo una thumb che consiste in un quadrato che ha come lato la lunghezza del lato più corto dell'originale. Essendo un quadrato ovviamente, parte dell'originale andrà persa, ma è proprio quello che voglio. Poi da quel quadrato mi creo una thumb piccolissima che andrà fatta vedere nella pagina di presentazione dei prodotti una di fianco all'altra e cliccando su una di queste si vedrà il quadrato più grande con la descrizione del prodotto e cliccando sul quadrato s vedrà, in esploso, l'immaigne originale.

    Ecco il motivo per cui mi creo 3 immagini diverse...




    ciauz
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Il problema non é dato dalla dimensione del file ma da quello dell'immagine. Se tu uploadi un'immagine tutta bianca di 2000x2000 pixel nonostante sarà di pochi byte l'errore lo da' comunque. Questo perché la libreria GD si crea una matrice dell'immagine per poterla trattare.
    Quindi una volta uploadato se vuoi sapere se la lib andrà in errore é sufficiente moltiplicare larghezza per altezza per profondità di colore.
    Se invece vuoi bloccare, giustamente, l'upload prima di effettuarlo con php non potrai mai sapere quanto é grande l'immagine (perché gira sul server) e quindi devi trovare qualcosa lato client (javascript?)

  9. #9
    Originariamente inviato da margherite
    ...Quindi una volta uploadato se vuoi sapere se la lib andrà in errore é sufficiente moltiplicare larghezza per altezza per profondità di colore.
    questo potrebbe essere comunque interessante. Come la posso ricavare la profondità del colore? se non chiedo troppo



    grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    ok sono un cretino perché non avevo pensato che la dimensione sta all'interno dell'array $_FILES e quindi la posso leggere da lì a meno che non ecceda il post_max_size ( penso )


    comunque ho fatto una prova, e anche con il file che prima mi dava errore ho:
    Array ( [file] => Array ( [name] => pluto.jpg [type] => image/pjpeg [tmp_name] => /tmp/php6SQTiw [error] => 0 [size] => 981184 ) )


    e quindi il file viene letto comunque...ora rimane la domanda del primo post, ossia:
    Sapete mica come potrei fare ad intercettare le dimensioni quindi del file selezionato e in caso queste eccedano fare in automatico un resize? il resize lo vorrei fare portando il peso a 100kb...

    Posso farlo o devo per forza passare le dimensioni? in caso io debba passare le dimensioni...come faccio a sapere che dimensioni dare per non eccedere nei miei 100kb? dò dimensioni a caso e poi riverifico finché l'immagine non pesa meno di 100kb? se fosse così non ci sarebbe un dispendio enorme di memoria che mi porterebbe comunque ad avere quel fatal error?^^







    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.