Ciao a tutti,
ho rispolverato un vecchio script per fare l'upload di file img con il ridimensionamento.
si tratta di due script: la classe e lo script di esempio.

esempio.php
Codice PHP:
<?php
include("classe_resize.php");

$resize = new resize;
$resize->urlimage "folder/lupo.jpg";
$resize->fisso 0;
$resize->maxX 300;
$resize->maxY 200;
$resize->latofisso "XY";
$resize->folder "public/img/";
$resize->newName "";

$resize->go();

if(
count($resize->errore)==0){
    echo 
"Nome file originale: ".$resize->originalName."
"
;
    echo 
"Larghezza file originale: ".$resize->originalX."
"
;
    echo 
"Altezza file originale: ".$resize->originalY."
"
;
    echo 
"Nuova Larghezza: ".$resize->newX."
"
;
    echo 
"Nuova Altezza: ".$resize->newY."
"
;
}else{
    echo 
implode("
"
$resize->errore);
}
?>
classe_resize.php
Codice PHP:
<?php
class resize{    
    var 
$urlimage "";
    var 
$maxX 100;
    var 
$maxY 100;
    var 
$fisso 1;
    var 
$latofisso "XY";
    var 
$folder "public/";
    var 
$newName "";
    
    
    
    function 
controlladati(){
        
$this->errore = array();
        
$this->Estensione "";
        
$this->originalX 0;
        
$this->originalY 0;
        
$this->originalName "";
        
$this->newX 0;
        
$this->newY 0;
        
        if(
$this->urlimage==""){
            
array_push($this->errore,"Scegliere un file da ridimensionare");
        }elseif(!
file_exists($this->urlimage) || !is_file($this->urlimage)){
            
array_push($this->errore,"Il file selezionato non esiste");
        }
        if(!
is_numeric($this->maxX) || !is_numeric($this->maxY) || $this->maxX<|| $this->maxY<0){
            
array_push($this->errore,"L'altezza e la larghezza dell'immagine devono essere numerici");
        }
        if(!
file_exists($this->folder) || !chmod($this->folder,0777)){
            
array_push($this->errore,"La cartella di destinazione non esiste o non è scrivibile");
        }
        if(
$this->fisso!=&& $this->fisso!=1){
            
array_push($this->errore,"La variabile di dimensione fissa deve essere 0 o 1");
        }
        if(
$this->latofisso!="XY" && $this->latofisso!="X" && $this->latofisso!="Y"){
            
array_push($this->errore,"La variabile di lato fisso devono essere X o Y o XY");
        }
        if(
count($this->errore)>0){
            return 
false;
        }else{
            return 
true;
        }
    }
    
    function 
go(){
        if(
$this->controlladati()){
            
$filename basename($this->urlimage);
            
$this->originalName $filename;
            if(
$this->newName==""){$this->newName=$filename;}
            
$this->Estensione strtolower(substr($filenamestrrpos($filename"."), strlen($filename)-strrpos($filename".")));
            if(
$this->Estensione==".jpeg" || $this->Estensione==".jpg"){
                
$handle_immagine imagecreatefromjpeg($this->urlimage);
            }elseif(
$this->Estensione==".gif"){
                
$handle_immagine imagecreatefromgif($this->urlimage);
            }elseif(
$this->Estensione==".png"){
                
$handle_immagine imagecreatefrompng($this->urlimage);
            }else{
                
array_push($this->errore,"Formato immagine non valido");
                return 
null;
            }
            
$handle_immagine_adattata=$this->adatta($handle_immagine);
            
imagejpeg($handle_immagine_adattata$this->folder.$this->newName80);
            
chmod($this->folder.$this->newName,0777);
            unset(
$handle_immagine);
            unset(
$handle_immagine_adattata);
        }
    }
    
    function 
adatta($handle_immagine){
        
$this->originalX=imagesx($handle_immagine);
        
$this->originalY=imagesy($handle_immagine);
        if(
$this->fisso==1){
            
$this->newX=$this->maxX;
            
$this->newY=$this->maxY;
        }else{
            if(
$this->latofisso=="XY"){
                if (
$this->originalX/$this->originalY>$this->maxX/$this->maxY) {
                    
$this->newX=$this->maxX;
                    
$this->newY=($this->originalY/$this->originalX)*$this->maxX;
                } else {
                    
$this->newX=($this->originalX/$this->originalY)*$this->maxY;
                    
$this->newY=$this->maxY;
                }
            }elseif(
$this->latofisso=="X"){
                
$this->newX=$this->maxX;
                
$this->newY=($this->originalY/$this->originalX)*$this->maxX;
            }elseif(
$this->latofisso=="Y"){
                
$this->newX=($this->originalX/$this->originalY)*$this->maxY;
                
$this->newY=$this->maxY;
            }else{
                if (
$this->originalX/$this->originalY>$this->maxX/$this->maxY) {
                    
$this->newX=$this->maxX;
                    
$this->newY=($this->originalY/$this->originalX)*$this->maxX;
                } else {
                    
$this->newX=($this->originalX/$this->originalY)*$this->maxY;
                    
$this->newY=$this->maxY;
                }
            }
        }
        
$tmp_immagine imagecreatetruecolor($this->newX$this->newY);
        
$handle_immagine_adattata imagecopyresampled($tmp_immagine$handle_immagine0000$this->newX$this->newY$this->originalX$this->originalY);
        return 
$tmp_immagine;
        
    }



}


?>
Vorrei che quando faccio l'upload di immagini con misure inferiori a X 300 e Y200 non effettuasse nessun resize e lasciasse l'immagine così come è.
Grazie anticipatamente