Visualizzazione risultati 1 fino 24 di 24

Discussione: Ridimensionare immagine PRIMA dell'upload x bypassare limite

  1. #1
    Guest

    Predefinito Ridimensionare immagine PRIMA dell'upload x bypassare limite

    ciao gente.
    ho scorperto dell'esistenza del limite dell'upload dei 3Mb.

    mi sapreste suggerire come modificare il mio script perchè modifichi le immagini prima di arrivare al blocco dell'invio?

    parte in cui prelevo il file dal pc e lo inietto in altervista ;)
    Codice PHP:
    while ($k <= $up){
    $t = $_FILES["file$k"]['tmp_name'];
    $sz = $_FILES["file$k"]['size'];
    $n = $_FILES["file$k"]['name'];
    if (
    $t == 'none'){
    echo
    "Non hai selezionato alcuna immagine da inviare";
    }
    else {
    if(
    $t != '' && $n != ''){
    $red = new thumbnail;
    $lrgImage = $red->generate('I',$t, $n, $dest, $n, 800); // ridimensiona l'immagine
    ridimensionatore:
    Codice PHP:
    class thumbnail
    {
    var
    $tipo; //mia aggiunta per forzare la creazione dei thumbnasil
    var $sourceFile; // We use this file to create the thumbnail
    var $originalFilename; // We use this to get the extension of the filename
    var $destinationDirectory; // The Directory in question
    var $destinationDirectoryFilename; // The destination filename

    var $createImageFunction = '';
    var
    $outputImageFunction = '';

    function
    generate($tipo ="", $sourceFile = "", $originalFilename = "", $destinationDirectory = "", $destinationDirectoryFilename = "", $width = -1, $height = -1)
    {
    if (!empty(
    $sourceFile))
    $this->sourceFile = $sourceFile;

    if (!empty(
    $originalFilename))
    $this->originalFilename = $originalFilename;

    if (!empty(
    $destinationDirectory))
    $this->destinationDirectory = $destinationDirectory;

    if (!empty(
    $destinationDirectoryFilename))
    $this->destinationDirectoryFilename = $destinationDirectoryFilename;

    if (!empty(
    $width))
    $this->width = $width;

    if (!empty(
    $height))
    $this->height = $height;

    list(,
    $this->extension) = explode('.', $this->originalFilename);

    switch (
    $this->extension)
    {
    case
    'gif' : case 'GIF':
    $createImageFunction = 'imagecreatefromgif';
    $outputImageFunction = 'imagegif';
    break;

    case
    'png' : case 'PNG':
    $createImageFunction = 'imagecreatefrompng';
    $outputImageFunction = 'imagepng';
    break;

    case
    'bmp' : case 'BMP':
    $createImageFunction = 'imagecreatefromwbmp';
    $outputImageFunction = 'imagewbmp';
    break;

    case
    'jpg': case 'jpeg': case 'JPG' : case 'JPEG':
    $createImageFunction = 'imagecreatefromjpeg';
    $outputImageFunction = 'imagejpeg';
    break;

    default :
    exit(
    "Errore: il formato '{$this->extension}' non è supportato");
    break;
    }

    $this->img = $createImageFunction($this->sourceFile);

    list(
    $this->org_width, $this->org_height) = getimagesize($this->sourceFile);

    if(
    $tipo == 'I'){
    if ((
    $this->org_height > 480) && ($this->org_width > 640)){
    if (
    $this->height == -1){
    $this->height = round($this->org_height * $this->width / $this->org_width);
    }
    if (
    $this->width == -1){
    $this->width = round($this->org_width * $this->height / $this->org_height);
    }
    }
    else{
    $this->height = $this->org_height;
    $this->width = $this->org_width;
    }
    }

    if(
    $tipo == 'T'){
    if (
    $this->height == -1){
    $this->height = round($this->org_height * $this->width / $this->org_width);
    }
    if (
    $this->width == -1){
    $this->width = round($this->org_width * $this->height / $this->org_height);
    }
    }

    $this->xoffset = 0;
    $this->yoffset = 0;

    $this->img_new = imagecreatetruecolor($this->width, $this->height);

    if (
    $this->img_new)
    {
    imagecopyresampled($this->img_new, $this->img, 0, 0, $this->xoffset, $this->yoffset, $this->width, $this->height, $this->org_width, $this->org_height);

    list(
    $this->newFilename) = explode('.', $this->destinationDirectoryFilename);

    $this->fullDestination = ($this->destinationDirectory.'/'.$this->newFilename.'.'.$this->extension);

    $outputImageFunction($this->img_new, $this->fullDestination);
    }
    else
    {
    $this->failed = true;
    }

    if (
    $this->failed == false)
    {
    return
    $this->fullDestination;
    }
    }
    }
    ?>
    grais

  2. #2
    Guest

    Predefinito

    dubito che tu possa farlo se non con un activex o robaccia del genere

  3. #3
    Guest

    Predefinito

    mmmhhh..
    e cosa posso cercare, come funzionano?
    si possono installare pure in firefox?

  4. #4
    Guest

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    cosa mi stai consigliando di cercare?

    grazie.

  6. #6
    Guest

    Predefinito

    In particolare:
    ...
    <!-- MAX_FILE_SIZE deve precedere campo di input del nome file -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    ...
    e più sotto:
    Il campo nascosto MAX_FILE_SIZE (misurato in byte) deve precedere il campo di input del file, ed il suo valore indica la dimensione massima di file accettata. Questa è un'informazione per il browser, ma anche il PHP lo verifica. E' facile aggirare questa impostazione sul browser, quindi non fate affidamento sul fatto che il navigatore si comporti come desiderato! L'impostazione PHP lato server per la dimensione massima non può comunque essere aggirata. Tuttavia si può comunque inserire MAX_FILE_SIZE per evitare all'utente di attendere il trasferimento di un file prima di scoprire che è di dimensioni eccessive.

    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    In particolare:

    e più sotto:



    Ciao!
    ah ok, ma avevo letto che il limite dell'upload a 3Mb era impostato nel php.ini di altervista.
    quindi che io setti il limite a 500Mb è inutile o no? :D

    grazie

  8. #8
    L'avatar di hackharo
    hackharo non è connesso Utente
    Data registrazione
    26-01-2007
    Messaggi
    120

    Predefinito

    Si infatti anch'io sapevo che il limite del php.ini aveva priorità su tutti gli altri...

    Comunque io ti consiglierei di sbbassare la qualità piuttosto che ridimensionare...

    Secondo me potresti fare così:
    1)identificare il formato dell'immagine con $_FILES['name']['type'] e le varie funzioni delle espressioni regolari...

    2) usare le funzioni imagecreatefromgif() imagecreatefrompng() ecc a seconda del formato...

    3)ora salvi con imagejpeg($immagine, $percorso, $qualità) dove $qualità è un numero che va da 0 a 100 che indica appunto la qualità dell'immagine(valore più alto, qualità più alta, file più pesante)...
    Non fare oggi quello che non hai fatto per convinzione ieri...

  9. #9
    Guest

    Predefinito

    si ok, io le immagini già le ridimensiono esattamente con le librerie php, non è quello il punto.
    il fatto è che quando l'utente preme INVIA sul form l'immagine o il pacchetto di immagini viene gia inviato al server e dunque la regola è gia infranta.

    è inutile continuare su questa linea temo, perchè non è solo questione di ridimensionare o cambiare la qualità del file è proprio intervenire PRIMA che il limite dei 3Mb venga raggiunto.

    spero di aver chiarito meglio la situazione.

    grazie

  10. #10
    Guest

    Predefinito

    Ma stiamo parlando del limite php o del limite impostato nel modulo?
    Del php sappiamo già come fare (almeno ho capito questo), tu hai chiesto di poter controllare, seppur in modo poco efficace, il peso prima di uploadare: quello che ti ho postato è la risposta.


    Ciao!

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    tu hai chiesto di poter controllare, seppur in modo poco efficace, il peso prima di uploadare
    mi sapreste suggerire come modificare il mio script perchè modifichi le immagini prima di arrivare al blocco dell'invio?
    rinnovo la mia idea che per fare una cosa del genere sia necessaria una simil applicazione che giri a lato server, che ridimensioni l'immagine prima di inviartela tramite post, io lo farei con un applet o javawebstart, ma non credo ci sia niente di fatto, dovresti costruirti tu qualcosa.....
    ti conviene pensare il tutto in modo diverso

  12. #12
    Guest

    Predefinito

    gerasimone, hai almeno provato la soluzione che ho dato?
    No così, tanto per provare.


    ciao!

  13. #13
    Guest

    Predefinito

    scusate ma si sta creando caos.
    1) debug il post l'ho aperto io e le cose le ho chieste io non gerasimone.
    2) debug continui a parlare di check sulle immagini ma io ho chiesto un'altra cosa :)
    3) gerasimone sembra aver capito la mia richiesta. io NON voglio controllare il peso delle immagini, quello so capace, vorrei capire se esiste un modo per

    RIDURRE il peso delle immagini PRIMA di uploadarle sul server, ma anche PRIMA che venga controllato il peso delle immagini stesse, in modo tale che, riducendole, aumenti il numero massimo di foto inviabile, essendo diminuito il peso complessivo in megabytes.

    grazie a tutti.
    spero di aver rimesso ordine nella discussione.

  14. #14
    Guest

    Predefinito

    Il fatto che il topic lo hai aperto tu non cambia il fatto che io possa rispondere ad altri utenti, ti pare?

    Il fatto che io ti ho postato quella soluzione non ti fa venire in mente che è un'alternativa a quello che ti hanno proposto gli altri e un'alternativa a quello che chiedi tu (che non è fattibile)?

    Le operazioni sul filesystem non è possibile da server a locale, per ovvie ragioni di sicurezza.
    Altrimenti saremmo in grado di cancellare ogni cosa dai computer dei visitatori.


    Ciao!

  15. #15
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per fare questa cosa devi agire sul computer dell'utente. L'unico metodo possibile potrebbe essere quello delle ActiveX (ma non saprei dirti come fare) che funzionano solo con Internet Explorer se non viene installato un apposito plug-in negli altri browser.
    Potresti aumentare la dimensione massima tramite .htaccess. C'è una discussione in merito recente.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Per fare questa cosa devi agire sul computer dell'utente. L'unico metodo possibile potrebbe essere quello delle ActiveX (ma non saprei dirti come fare) che funzionano solo con Internet Explorer se non viene installato un apposito plug-in negli altri browser.
    Potresti aumentare la dimensione massima tramite .htaccess. C'è una discussione in merito recente.
    intanto grazie per l'esaustiva risposta.
    ma scusa mi ricordo perfettamente una discussione in cui si diceva che il massimo impostato nel php.ini di altervista è 3Mb per non sovraccaricare il server...
    ora invece mi dici che posso modificare l'.htaccess e risolvere il problema?
    mi puoi linkare la discussione?

    grazie.

    PS:
    Citazione Originalmente inviato da debug
    Il fatto che il topic lo hai aperto tu non cambia il fatto che io possa rispondere ad altri utenti, ti pare?
    non si chiama off-topic quello?

    PPS @ debug: comunque non scaldarti, non volevo essere acido o infastidirti. stavo cercando di mantenere ordine in una discussione aperta dal sottoscritto e che volevo mantensse una linea per arrivare ad una soluzione. cosa che mi pare lecita.

    ciao ciao e grazie dei tuoi aiuti cmq sempre costanti ed efficenti!

  17. #17
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  18. #18
    Guest

    Predefinito

    Non mi sono scaldato, ho soltanto replicato alle tue risposte.

    No, quello non è off topic, un OT sarebbe se in questa discussione si iniziasse a parlare dell'aumento della benzina.


    Ciao!

  19. #19
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Non mi sono scaldato, ho soltanto replicato alle tue risposte.

    No, quello non è off topic, un OT sarebbe se in questa discussione si iniziasse a parlare dell'aumento della benzina.


    Ciao!
    ok capito.
    amici come prima?
    non voglio discutere con te, visto che sei sempre IPERdisponibile, IPERpresente, IPERutile con le tue mille soluzioni. mi dispiacerebbe creare tensioni con un pilastro del forum che merita tutto il rispetto.

    ciao ciao.

  20. #20
    Guest

    Predefinito

    Ecco, questo è Off Topic!


    Ciaoooooooo!!!!!

  21. #21
    Guest

    Predefinito

    ma qui si parla di HDD online.
    non è diversa la cosa?
    io non sto infilando roba nell'HDD, ma nel mio spazio pubblico...
    sono confuso...

    @debug:
    Citazione Originalmente inviato da debug
    Ecco, questo è Off Topic!
    calcola che volevo scriverlo io! :D
    Ultima modifica di lsdforum : 07-03-2008 alle ore 13.57.30

  22. #22
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Leggi tutta la discussione e finitela con questo off topic.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  23. #23
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Non ho voglia di leggermi tutto, cmq se nessuno ti ha ancora risposto l'operazione di "ritaglio" dell'immagine la puoi fare in flash.
    Sicuramente si può fare, l'ho già visto, ma non saprei dirti come, magari trovi qualche script già fatto.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool Visualizza messaggio
    Leggi tutta la discussione e finitela con questo off topic.
    che figo un Moderatore ha sgridato un Super Moderatore!

    cmq ora ho capito. è l'HDD che si appoggia all'upload sul server e dunque senza impazzirmi posso risolvere così.

    bene, grazie.
    non risolve il problema dal punto di vista della programmazione, ma almeno in parte allevia il patema :D

    gracias,

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •