Salve sto provando ad usare questa funzione per fare in modo che il ridimensionamento delle immagini caricate sul mio sito sia PROPORZIONALE.
Codice PHP:
<?
function fnCreaThumbnail($sOrigine$sDestinazione$sMaxWidth=0$sMaxHeight=0

    
/* 
     * Verifica l'esistenza dell'immagine d'origine e, se presente, ne determina 
     * la tipologia 
     */ 

    
$sImgInfo = @getimagesize($sOrigine); 
    switch(
$sImgInfo[2]) 
    { 
        case 
1$sType IMG_GIF; break; 
        case 
2$sType IMG_JPG; break; 
        case 
3$sType IMG_PNG; break; 
        case 
4$sType IMG_WBMP; break; 
        default: return 
$sOrigine; break; 
    } 

    switch(
$sType
    { 
        case 
IMG_GIF
            if (!
function_exists('imagecreatefromgif')) return $sOrigine
            
$srcImage = @imagecreatefromgif($sOrigine); 
            break; 
        case 
IMG_JPG
            if (!
function_exists('imagecreatefromjpeg')) return $sOrigine
            
$srcImage = @imagecreatefromjpeg($sOrigine); 
            break; 
        case 
IMG_PNG
            if (!
function_exists('imagecreatefrompng')) return $sOrigine
            
$srcImage = @imagecreatefrompng($sOrigine); 
            break; 
        case 
IMG_WBMP
            if (!
function_exists('imagecreatefromwbmp')) return $sOrigine
            
$srcImage = @imagecreatefromwbmp($sOrigine); 
            break; 
        default: return 
$sOrigine
    } 

    if(
$srcImage
    { 
        
/* Recupera la dimensione in pixel dell'immagine d'origine */ 
        
$srcWidth $sImgInfo[0]; 
        
$srcHeight $sImgInfo[1]; 
         
         
        
/* 
         * E imposta a zero quelle di destinazione o alla dimensione della 
         * sorgente se non è limitata 
         */ 
        
$sNewWidth = ($sMaxWidth == $srcWidth 0); 
        
$sNewHeight = ($sMaxHeight == $srcHeight 0); 

        
/* Calcola il rapporto di proporzione */ 
        
$sPropW $sNewWidth $srcWidth
        
$sPropH $sNewHeight $srcHeight
         
        
/* 
         * Quindi procede al controllo per determinare se una (o entrambe) le 
         * dimensioni eccedono quelle massime relative. 
         * Se una sola eccede quella massima relativa questa verrà massimizzata 
         * nonché, l'altra dimensione, ricalcolata onde mantenere le proporzioni 
         * corrette. 
         * Se entrambe le dimensioni eccedono i loro massimi, viene determinato 
         * quale tra le due è la maggiore e viene ricalcolata l'altra. 
         */ 
        
if ($sPropW && $sPropW <= $sPropH
        { 
            
/* 
             * Vi è limite alla larghezza massima, l'immagine d'origine eccede 
             * tale limite e quest'ultima è anche la dimensione più grande (o 
             * eguale) tra larghezza ed altezza. 
             */ 
            
$sNewWidth $sMaxWidth
        } 

        if (
$sPropH && $sPropH <= $sPropW
        { 
            
/* 
             * Vi è limite all'altezza massima, l'immagine d'origine eccede 
             * tale limite e quest'ultima è anche la dimensione più grande (o 
             * eguale) tra larghezza ed altezza. 
             */ 
            
$sNewHeight $sMaxHeight
        } 
         
        
/* 
         * A questo punto, se una delle due nuove dimensioni è ancora pari a 
         * zero, significa che quest'ultima deve essere ricalcolata in base 
         * alla sua antagonista per poter rispettare le proporzioni. 
         */ 
        
if ($sNewWidth && $sNewHeight == 0
        { 
            
/* Ricalcola l'altezza */ 
            
$sRatioWidth $srcWidth $sNewWidth
            
$sNewHeight $srcHeight $sRatioWidth
        } 

        if (
$sNewHeight && $sNewWidth == 0
        { 
            
/* Ricalcola la larghezza */ 
            
$sRatioHeight $srcHeight $sNewHeight
            
$sNewWidth $srcWidth $sRatioHeight
        } 
         
        if (
$sNewWidth == && $sNewHeight == 0
        { 
            
$sNewWidth $srcWidth
            
$sNewHeight $srcHeight
        } 
         
        
/* Procede quindi alla creazione effettiva della thumbnail */ 
        
if (!function_exists("imagecreatetruecolor")) 
            
$sDestImage = @imagecreate($sNewWidth$sNewHeight); 
        else 
            
$sDestImage = @imagecreatetruecolor($sNewWidth$sNewHeight); 
         
        
imagecopyresized($sDestImage$srcImage0000$sNewWidth$sNewHeight$srcWidth$srcHeight); 

        switch(
$sType
        { 
            case 
IMG_GIF: @imagegif($sDestImage$sDestinazione); break; 
            case 
IMG_JPG: @imagejpeg($sDestImage$sDestinazione); break; 
            case 
IMG_PNG: @imagepng($sDestImage$sDestinazione); break; 
            case 
IMG_WBMP: @imagewbmp($sDestImage$sDestinazione); break; 
        } 

        
/* Libera la memoria */ 
        
@imagedestroy($srcImage); 
        @
imagedestroy($sDestImage); 

        return 
$sDestinazione
    } 
    else 
    { 
        return 
$sOrigine
    } 

?>

la pagina upload_categoria.php conmtiene il seguente codice attraverso il quale richiamo la funzione impostata nel file gd.php
Codice PHP:
<? 
                    
                    
if ((isset($_POST["act"])) AND ($_POST["act"] == "upload") ){ 
                        if(isset(
$_FILES["file"]["size"])){
                            
$id $_POST["id"];
                            
$file =$_FILES["file"]["name"];
                            
$arr_ext = array("gif","jpg","jpeg");
                            list(
$ok_upload,$end_result,$file_name) = uploadFile("../public/servizi/".$id."/foto/",$_FILES["file"],$arr_ext);    
                            if(
$ok_upload){
include(
"../include/gd.php");
$origine "../public/servizi/".$id."/foto/".$file// percorso al file dell'immagine 
                                
$destinazione "../public/servizi/".$id."/thumb/".$file// directory di salvataggio delle miniature create 
                                /* Dimensione finale massima:  */ 
                                
$thumb fnCreaThumbnail($origine$destinazione200,200); 
                                echo 
"<script>self.location.href='servizi_foto.php?id=".$id."';</script>";
                                
stampa_msg();
                                }
                                }
                                }
?>
Il problem rigurada la creazione dell'immagine proporzionata in pratica il resize procede ma le dimensioni proporzionate non le ottengo . dove Sbaglio?