• User Attivo

    [SCRIPT] Resize image mantenendo proporzioni

    Ciao a tutti,

    mi dite cosa sbaglio in questo script ?

    [php]
    list($ihwidth,$ihheight) = explode('x',$grandezza);
    //IMPOSTO UN MASSIMALE PER LE IMMAGINI
    $altezzamassima = "270";
    $larghezzamassima = "240";

    if($ihwidth > $larghezzamassima && $ihheight <= $altezzamassima) {
    $ihwidthprovvisorio = $ihwidth - $larghezzamassima;
    $ihwidth1 = $ihwidth - $ihwidthprovvisorio;

    $prendimolapercentualetolta = ($ihwidthprovvisorio/$ihwidth)*100;
    $ihheightprovv =($ihheight * $prendimolapercentualetolta)/100;
    $ihheight1 = round($ihheight - $ihheightprovv);
    }

    if($ihheight > $altezzamassima && $ihwidth <= $larghezzamassima) {
    $ihheightprovvisorio = $ihheight - $altezzamassima;
    $ihheight1 = $ihheight - $ihheightprovvisorio;

    $prendimolapercentualetolta2 = ($ihheightprovvisorio/$ihwidth)*100;
    $ihwidthprovv =($ihwidth * $prendimolapercentualetolta2)/100;
    $ihwidth1 = round($ihwidth - $ihwidthprovv);

    }

    if($ihheight > $altezzamassima && $ihwidth > $larghezzamassima) {
    $ihwidthprovvisorio = $ihwidth - $larghezzamassima;
    $ihheightprovvisorio = $ihheight - $altezzamassima;

    if($ihwidthprovvisorio >= $ihheightprovvisorio) {
    $ihwidthprovvisorio = $ihwidth - $larghezzamassima;
    $ihwidth1 = $ihwidth - $ihwidthprovvisorio;
    $prendimolapercentualetolta = ($ihwidthprovvisorio/$ihwidth)*100;
    $ihheightprovv =($ihheight * $prendimolapercentualetolta)/100;
    $ihheight1 = round($ihheight - $ihheightprovv);

    }

    else if($ihwidthprovvisorio < $ihheightprovvisorio){
    $ihheightprovvisorio = $ihheight - $altezzamassima;
    $ihheight1 = $ihheight - $ihheightprovvisorio;
    $prendimolapercentualetolta2 = ($ihheightprovvisorio/$ihwidth)*100;
    $ihwidthprovv =($ihwidth * $prendimolapercentualetolta2)/100;
    $ihwidth1 = round($ihwidth - $ihwidthprovv);
    }

    }
    else if($ihwidth <= $larghezzamassima && $ihheight <= $altezzamassima) {
    $ihwidth1 = $ihwidth;
    $ihheight1 = $ihheight;
    }[/php]

    Io vorrei solo ricreare l'immagine senza perdere il ratio..

    Avete idee?


  • User Attivo

    Se a qualcuno dovesse servire, ho ottimizzato lo script:

    [php]
    list($ihwidth,$ihheight) = explode('x',$grandezza);
    //IMPOSTO UN MASSIMALE PER LE IMMAGINI
    $am = "270";
    $lm = "240";
    if($ihwidth > $lm or $ihheight > $am) {
    $eliminarel = $ihwidth - $lm;
    $eliminarea = $ihheight - $am;
    if (($elimnarel - $eliminarea) > ($eliminarea - $eliminarel)) { $perc = ($eliminarel100)/$ihwidth;
    $ihw = round(($ihwidth/100)
    $perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)$perc);
    $ihheight1 = $ihheight - $ihh;
    }
    else if (($elimnarel - $eliminarea) < ($eliminarea - $eliminarel)) { $perc = ($eliminarea
    100)/$ihheight;
    $ihw = round(($ihwidth/100)$perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)
    $perc);
    $ihheight1 = $ihheight - $ihh;
    }
    }
    else {
    $ihwidth1 = $ihwidth;
    $ihheight1 = $ihheight;
    }[/php]

    Funziona alla perfezione dato che calcola le %.

    Saluti.


  • User Attivo

    C'erano 2 errori, questo è perfetto:

    [php]
    //IMPOSTO UN MASSIMALE PER LE IMMAGINI
    $am = "150";
    $lm = "150";

    if($ihwidth > $lm or $ihheight > $am) {
    $eliminarel = $ihwidth - $lm;
    $eliminarea = $ihheight - $am;
    if ($eliminarel >= $eliminarea) { $perc = round(($eliminarel100)/$ihwidth);
    $ihw = round(($ihwidth/100)
    $perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)$perc);
    $ihheight1 = $ihheight - $ihh;
    }
    else if ($eliminarel < $eliminarea) { $perc = round(($eliminarea
    100)/$ihheight);
    $ihw = round(($ihwidth/100)$perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)
    $perc);
    $ihheight1 = $ihheight - $ihh;
    }
    }
    else {
    $ihwidth1 = $ihwidth;
    $ihheight1 = $ihheight;
    }
    [/php]


  • Consiglio Direttivo

    Ciao Sovietiko,
    ottimo script, complimenti.
    Con il tuo permesso mi piacerebbe inserirlo nella sezione script utili. 🙂


  • User Attivo

    [...]

    Certo! Spero sarà utile a tutti! 🙂


  • Consiglio Direttivo

    Fatto, grazie a nome della community. 😉


  • User

    Buongiorno a tutti....sono un neofita e vorrei sapere all'interno di quale file devo aggiungere il codice. Utilizzo lo script:
    'giorgiotave.it/forum/scripting-e-risorse-utili/95013-tutorial-come-caricare-un-immagine-su-database-mysql.html'

    Ringrazio e Buon Anno!
    Marco


  • User Newbie

    @Sovietiko said:

    C'erano 2 errori, questo è perfetto:

    [php]
    //IMPOSTO UN MASSIMALE PER LE IMMAGINI
    $am = "150";
    $lm = "150";

    if($ihwidth > $lm or $ihheight > $am) {
    $eliminarel = $ihwidth - $lm;
    $eliminarea = $ihheight - $am;
    if ($eliminarel >= $eliminarea) { $perc = round(($eliminarel100)/$ihwidth);
    $ihw = round(($ihwidth/100)
    $perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)$perc);
    $ihheight1 = $ihheight - $ihh;
    }
    else if ($eliminarel < $eliminarea) { $perc = round(($eliminarea
    100)/$ihheight);
    $ihw = round(($ihwidth/100)$perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)
    $perc);
    $ihheight1 = $ihheight - $ihh;
    }
    }
    else {
    $ihwidth1 = $ihwidth;
    $ihheight1 = $ihheight;
    }
    [/php]

    e in questo script dove lo dovrei collocare ? /forum/scripting-e-risorse-utili/95013-tutorial-come-caricare-un-immagine-su-database-mysql.html
    :():


  • User Attivo

    Ciao,

    quello script è davvero di base per il caricamento delle immagini..
    Dovresti prima recuperare le dimensioni magari in questo modo:
    [PHP]
    //recupero altezza e larghezza

    $imagesize = @getimagesize($nome_file_temporaneo);
    $ihwidth= $imagesize[0];
    $ihheight= $imagesize[1];

    //IMPOSTO UN MASSIMALE PER LE IMMAGINI
    $am = "150";
    $lm = "150";

    if($ihwidth > $lm or $ihheight > $am) {
    $eliminarel = $ihwidth - $lm;
    $eliminarea = $ihheight - $am;
    if ($eliminarel >= $eliminarea) { $perc = round(($eliminarel100)/$ihwidth);
    $ihw = round(($ihwidth/100)
    $perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)$perc);
    $ihheight1 = $ihheight - $ihh;
    }
    else if ($eliminarel < $eliminarea) { $perc = round(($eliminarea
    100)/$ihheight);
    $ihw = round(($ihwidth/100)$perc);
    $ihwidth1 = $ihwidth-$ihw;
    $ihh = round(($ihheight/100)
    $perc);
    $ihheight1 = $ihheight - $ihh;
    }
    }
    else {
    $ihwidth1 = $ihwidth;
    $ihheight1 = $ihheight;
    }

    //se l'immagine sarà da ridimensionare, verrà ridimensionata grazie allo script che calcola le giuste variazioni

    $thumb2 = imagecreatetruecolor($ihwidth1, $ihheight1);
    imagecopyresized($thumb2, $source, 0, 0, 0, 0, $ihwidth1, $ihheight1, $ihwidth, $ihheight);
    $anteprima2 = "nomefoto";
    imagejpeg($thumb2, "percorso della foto".$anteprima2, 75);

    [/PHP]

    Ovviamente lascio a te mettere i controlli ecc.. Il codice è vecchio, ma grosso modo è così che funziona.

    Ciao,
    M.