Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529

    Gd ridimensionamente in proporzione

    Salve a tutti!

    io utilizzo questa funzione per ridimensionare le mie immagine durante l'upload sul server:

    Codice PHP:
    function resize($source_file$output_file$size$quality)
    {
    //jpeg resizer
    $success false;
    list(
    $width$height) = getimagesize($source_file);

    $new_width intval(($width $size) / max($width$height));
    $new_height intval(($height $size) / max($width$height));

    if ( 
    $image_in imagecreatefromjpeg($source_file) )
    {
    if ( 
    $image_out imagecreatetruecolor($new_width$new_height) )
    imagecopyresampled($image_out$image_in0000$new_width$new_height$width$height);
    if ( 
    imagejpeg($image_out$output_file$quality) )
    {
    $success true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);
    }
    return 
    $success;


    Però in questo caso mi ridimensiona il lato pià lungo e lo porta lla dimensione che decido io.
    Invece vorrei che il lato che voglio ridimensionare sia sempre l'altezza e che la lunghezza si proporzioni di conseguenza.
    come posso fare?

    Grazie in anticipo a tutti
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  2. #2
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    Ma che cavolo di titolo ho scritto
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  3. #3
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    Risolto!

    bastava solo un pò di matematica:

    $new_width = $width*($size/$height);

    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  4. #4
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    Niente..come non detto!

    avete idee da suggerire
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  5. #5
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    Up
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  6. #6
    Ti sei Risposto solo...
    Basta la Matematica....

    La Larghezza è direttamente proporzionale alle Larghezza Ridimensionata, come l'altezza l o è all'altezza ridimensionata...perciò:

    $width = $new_width : $height = $new_height

    Quindi:

    $new_height = ($new_width * $height) / $width...

    Supponendo di ridimensiona da 1024x768, portando la larghezza da 1024 a 800, si avrebbe che:

    1024 = 800 : 768 = XXX

    quindi:

    Nuova Altezza = (800 * 768) / 1024 = 600 quindi... la proporzione fa: 1024x768 ==> 800x600


  7. #7
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    ma perchè non lo ridimensiona in modo correto?!?!

    Il problema sta che lo inserisco nella funzione che ho usato qui sopra?
    non penso, anke perchè non centra nulla io ho creato una variabile che non viene richiamata da nessun'altra parte... non so, dovè che sbaglio? ho usato perfettamente la tua proporzione stefano ma non va
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

  8. #8
    Ti posto qui di seguito la parte di codice che ho utilizzato per caricare una foto da un form.
    Il codice verifica se la foto supera le dimensioni massime e la riduce, altrimenti la carica così com'è. Ci sono abbastanza commenti... quindi credo non sia difficile da capire. In ogni caso per qualunque dubbio chiedi


    Codice PHP:
    $larghezzaMax 800//larghezza massima foto
    $altezzaMax 600//altezza massima foto

    if(isset($_POST["inviaFoto"]))
    {
        
    $path="images/foto";     //indirizzo di cartella dove inserire le foto
        
        
    $erroreCaricamento false;
        
        
    $filename $HTTP_POST_FILES['foto']['tmp_name']; //riferimento al file da caricare
        
    $realname $HTTP_POST_FILES['foto']['name'];         //nome del file da caricare
        
    $realname str_replace(" ""_"$realname); //sostituisce gli spazi vuoti nel nome
            
        
    if(is_uploaded_file($filename)) //prova a caricare l'immagine
        
    {    
            
    //dimensioni del file
            
    list($larghezzaOrig$altezzaOrig) = getimagesize($filename);
            
            
    //se una delle dimensioni supera il limite crea un nuovo file della dimensione corretta
            
    if($larghezzaOrig $larghezzaMax or $altezzaOrig altezzaMax
            {
                
    //calcola il fattore di riduzione dell'immagine
                
    $fattoreLarghezza $larghezzaOrig $larghezzaMax;
                
    $fattoreAltezza $altezzaOrig $altezzaMax;
                
    $fattoreRiduzione max($fattoreLarghezza$fattoreAltezza);
                
                
    //determina le nuove dimensioni dell'immagine
                
    $larghezzaNew = (int) $larghezzaOrig $fattoreRiduzione;
                
    $altezzaNew = (int) $altezzaOrig $fattoreRiduzione;
                
                
    //crea il file
                
    $fileRidimensionato imagecreatetruecolor($larghezzaNew$altezzaNew);
                
    $source imagecreatefromjpeg($filename);
                
                
    // ridimensionamento
                
    imagecopyresized($fileRidimensionato$source0000$larghezzaNew$altezzaNew$larghezzaOrig$altezzaOrig);
                
                
    // salvataggio file
                
    imagejpeg($fileRidimensionato$path."/".$realname100);
                
                
    //elimina il file temporaneo creato
                
    ImageDestroy($fileRidimensionato);
            
            }
            
            
    //altrimenti semplicemente sposta il file temporaneo nel posto giuso
            
    else
            {
                if(!
    move_uploaded_file($filename$path."/".$realname))
                    
    $erroreCaricamento true;
            }
            
        }
        else
            
    $erroreCaricamento true;
        
        if(!
    $erroreCaricamento)
        {
            echo(
    "<script language='JavaScript'>alert(\"Immagine correttamente caricata!\")</script>");
        }
        else
        {
            echo(
    "<script language='JavaScript'>alert(\"ERRORE durante il caricamento del file! (probabilmente la foto è troppo grande)\")</script>");
        } 

  9. #9
    Utente di HTML.it L'avatar di Aran
    Registrato dal
    Nov 2002
    Messaggi
    1,529
    Risolto!

    Mi è venuta la forlgorazione..da fagiano perchè potevo pensarci acnhe prima nè..

    In pratica passo 2 valori nella funzione, altezza e larghezza, e poi faccio il controolo del lato pià lungo e lo ridimensiono a seconda di quanto mi serve.

    Grassie a tutti per l'aiuto
    Mi diceva sempre: "Mai mangiare a stomaco vuoto..."

    Frank Cianuro - Aeroplane - Aran Blog - No Spez la Catena.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.