hola.
 
tengo una pagina en que los usuarios pueden subir imagenes pero como pueden subir imagenes de cualquier dimension genera problemas si la proporcion entre alto y ancho no es la adecuada. para eso me he creado este pequeño script basandome an un par de tutoriales  encontre:  
 Código PHP:
        function crear_thumb($img, $tname){
            // Obtencion de formatos de imagen 
            if(stristr(strtolower($img),"jpg") or stristr(strtolower($img),"jpeg")){ 
                $img = imagecreatefromjpeg($img); 
                $tipo = "jpg"; 
            } 
    
            if(stristr(strtolower($img),"png")){ 
                $img = imagecreatefrompng($img); 
                $tipo = "png"; 
            } 
             
            if(stristr(strtolower($img),"gif")){ 
                $img = imagecreatefromgif($img); 
                $tipo = "gif"; 
            } 
                 
                    // Obtenemos ancho y alto de la imagen 
            $ancho = imagesx($img); 
            $alto = imagesy($img); 
            if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
                $n_alto = 202; 
                $redu = ($n_alto * 100) / $alto; 
                $n_ancho = round($ancho * $redu / 100); 
                $thumb = imagecreatetruecolor($n_ancho,$n_alto); 
                imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto); 
 
            }else{
                $thumb = imagecreatetruecolor(244, 204);
                imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
                
                return array(244, 204);
            }
 
    
            switch($tipo){
                
                case "jpg":
                imagejpeg($thumb, $tname); 
    
                case "png":
                imagepng($thumb, $tname); 
    
                case "gif":
                imagegif($thumb, $tname); 
                
            }
    
            imagedestroy($thumb); 
            return array($n_ancho, $n_alto);
    } 
    
  el problema lo tengo en esta parte:  
 Código PHP:
    if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
                $n_alto = 202; 
                $redu = ($n_alto * 100) / $alto; 
                $n_ancho = round($ancho * $redu / 100); 
                $thumb = imagecreatetruecolor($n_ancho,$n_alto); 
                imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto); 
 
            }else{
                $thumb = imagecreatetruecolor(244, 204);
                imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
                
                return array(244, 204);
            } 
    
  si entra dentro de ese "else" la imagen no se crea, mi intencion es recortar el centro de la imagen original en una neva imagen de 244x204. que estoy haciendo mal??