Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Utente di HTML.it L'avatar di Gualaz
    Registrato dal
    Jun 2006
    Messaggi
    64
    Originariamente inviato da bubi1
    Alla fine credo che tu debba incrementare il memory_limit, se puoi. 24 mega sono pochi, php mette di default 128.

    Considera che per ridimensionare un immagine compressa (e la compressione jpg puo' arrivare anche 1:10), la libreria che se ne occupa deve tenere in memoria contemporaneamente la copia originale non compressa e la nuova immagine.
    Ad esempio un immagine con la risoluzione 1900x1200 a 24bpp, puo' pesare 1 mb, ma consumera' 1900*1200*24 = 54720000 bits, che sono ~6-7 mb - e questa e' solo una parte di memoria necessaria.

    Poi c'e' anche la memoria consumata dal resto dello script.

    Quindi riassumendo - 24mb sono pochi
    Grazie, proverò a contattare il servizio di hosting anche se non credo possa (o meglio voglia)personalizzare queste cose
    cmq grazie
    Quando ho sete nessuno se ne accorge, quando bevo se ne accorgono tutti!!!

  2. #12
    Originariamente inviato da bubi1
    Alla fine credo che tu debba incrementare il memory_limit, se puoi. 24 mega sono pochi, php mette di default 128.
    in realtà è cosi solo da poche release e questo principalmente per colpa di codice scritto male o che spreca inutilmente quantità di risorse inimmaginabili

    Considera che per ridimensionare un immagine compressa (e la compressione jpg puo' arrivare anche 1:10), la libreria che se ne occupa deve tenere in memoria contemporaneamente la copia originale non compressa e la nuova immagine.
    Ad esempio un immagine con la risoluzione 1900x1200 a 24bpp, puo' pesare 1 mb, ma consumera' 1900*1200*24 = 54720000 bits, che sono ~6-7 mb - e questa e' solo una parte di memoria necessaria.
    in realtà è di più perché molte immagini utilizzano un bpp di 32, ovvero 32 bit per pixel, ovvero 4 byte per pixel, quindi diciamo che si arriva con facilità anche a 10mb.

    In realtà la cosa corretta da fare sarebbe evitare che immagini cosi grandi vengano processate e per far questo si dovrebbe poter usare la funzione getimagesize, leggendo il primo, il secondo ed il settimo indice dell'array andando quindi a verificare la memoria necessaria per l'elaborazione integrando il tutto con ini_get (o ini_get_all) per leggere la memoria massima disponibile dello script e memory_get_usage per vedere quanta se ne sta già usando. Ovviamente è importante liberare la memoria appena si può ... sempre

    In alternativa, se si devono elaborare indipendentemente si usano tools esterni, come le imagemagik che, anche se non velocissime, ma comunque più delle gd, non sono limitate dalle funzioni di php.

    Ovviamente se si hanno di queste necessità il mio consiglio è una VPS (un server virtuale) da un fornitore di servizi serio che faccia uso di xen o vmware per fornire la macchina virtuale
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #13
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    in realtà è di più perché molte immagini utilizzano un bpp di 32, ovvero 32 bit per pixel, ovvero 4 byte per pixel, quindi diciamo che si arriva con facilità anche a 10mb.
    Il quarto e' l'alpha channel del rgba, ma credo che lui parli di immagini provvenienti da fotocamere.
    Ad ogni modo, si, si puo' arrivare facilmente a 10mb.
    Cmq, ho sentito/letto che su alcuni hoster (niente nomi ), funziona l'ini_set, e mi pare anche diano una specie di php.ini per user (reso possibile da php in modalita cgi). E forse ci sono le lib imagemagick.

  4. #14
    Utente di HTML.it L'avatar di Gualaz
    Registrato dal
    Jun 2006
    Messaggi
    64
    ho fatto un po di test e il problema esce solo con file (proprio provenienti da forocamere quindi senza canale alpha) di medie dimensioni.
    La cosa che mi ha più stupito è proprio che se riduco la dimensione in pixel aumentando anche i mb il file funziona, mentre va in errore con dimensioni superiori ai 2000 x 1600 px.
    Quando ho sete nessuno se ne accorge, quando bevo se ne accorgono tutti!!!

  5. #15
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    La cosa che mi ha più stupito è proprio che se riduco la dimensione in pixel aumentando anche i mb il file funziona, mentre va in errore con dimensioni superiori ai 2000 x 1600 px.
    Il perche' di questo l'ho gia' spiegato sopra.

    Comunque, hai provato a chiamare un
    Codice PHP:
    ini_set('memory_limit','32M'); 
    al inizio del tuo file? Oppure a mettere/modificare memory_limit = 32M nel tuo php.ini (se lo vedi andando su ftp)?
    Ovviamete i 32mb sono indicativi, sta a te scegliere in base alle esigenze.

  6. #16
    Originariamente inviato da bubi1
    Il quarto e' l'alpha channel del rgba, ma credo che lui parli di immagini provvenienti da fotocamere.
    Ad ogni modo, si, si puo' arrivare facilmente a 10mb.
    Cmq, ho sentito/letto che su alcuni hoster (niente nomi ), funziona l'ini_set, e mi pare anche diano una specie di php.ini per user (reso possibile da php in modalita cgi). E forse ci sono le lib imagemagick.
    RGBA è solo l'elenco dei canali, le PNG ad esempio, anche se esistono le versioni con BPP ridotto, fanno uso di tutti e 4 i canali, inoltre alcune compressioni delle JPG supporta tutti e 4 i canali

    per questo ho proposto l'utilizzo di getimagesize ... in modo da poter effettuare il conteggio preciso e, invece di far fallire con un errore generico l'operazione, avvisare l'utente dicendogli che l'immagine è troppo grande
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #17
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da daniele_dll
    RGBA è solo l'elenco dei canali, le PNG ad esempio, anche se esistono le versioni con BPP ridotto, fanno uso di tutti e 4 i canali, inoltre alcune compressioni delle JPG supporta tutti e 4 i canali
    Ti riferisci ai png hicolor e ai jp2? Ad ogni modo, ho detto che il quarto e' l'alfa perche' il 32bpp menzionato da te non e' altro che il truecolor 24 + un canale che quasi sempre e' alfa.

    per questo ho proposto l'utilizzo di getimagesize ... in modo da poter effettuare il conteggio preciso e, invece di far fallire con un errore generico l'operazione, avvisare l'utente dicendogli che l'immagine è troppo grande
    Su questo non ci piove, il controllo dell'input e' d'obbligo.

    Io comunque sto aspettando se Gualaz ha provato con ini_set come ho detto prima, sono curioso se funzionera' alzando il memory_limit. Ricordo che una volta ebbi dei problemi assurdi con delle immagini salvate in un colorspace insolito..

  8. #18
    Utente di HTML.it L'avatar di Gualaz
    Registrato dal
    Jun 2006
    Messaggi
    64
    Originariamente inviato da bubi1
    Il perche' di questo l'ho gia' spiegato sopra.

    Comunque, hai provato a chiamare un
    Codice PHP:
    ini_set('memory_limit','32M'); 
    al inizio del tuo file? Oppure a mettere/modificare memory_limit = 32M nel tuo php.ini (se lo vedi andando su ftp)?
    Ovviamete i 32mb sono indicativi, sta a te scegliere in base alle esigenze.
    si provato entrambe le soluzioni ma nulla da fare!
    Quando ho sete nessuno se ne accorge, quando bevo se ne accorgono tutti!!!

  9. #19
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Potresti fare questo test, in un file php vuoto?
    Codice PHP:
    <?php
    if(ini_set('memory_limit''64M')){
            echo 
    'funziona';
    }else{
            echo 
    'non funziona';
    }
    $a str_repeat('1',50000000);
    echo 
    "\n
    "
    .memory_get_usage();
    ?>
    e postare il risultato, giusto per capire se le impostazioni del hoster ti lasciano fare questo tipo di cose?

  10. #20
    Utente di HTML.it L'avatar di Gualaz
    Registrato dal
    Jun 2006
    Messaggi
    64
    Originariamente inviato da bubi1
    Potresti fare questo test, in un file php vuoto?
    Codice PHP:
    <?php
    if(ini_set('memory_limit''64M')){
            echo 
    'funziona';
    }else{
            echo 
    'non funziona';
    }
    $a str_repeat('1',50000000);
    echo 
    "\n
    "
    .memory_get_usage();
    ?>
    e postare il risultato, giusto per capire se le impostazioni del hoster ti lasciano fare questo tipo di cose?
    Sembra funzionare, mi da come risultato:

    funziona
    50065024
    Quando ho sete nessuno se ne accorge, quando bevo se ne accorgono tutti!!!

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.