Mira a ver si esto te sirve. Un saludo.
  Código PHP:
        // genera un identificador de imagen a partir de un fichero de imagen
    // Devuelve el identificador o false en caso de error
    
        function imagecreatefromfile($imagefile)
        {
        // variable resultado
        
            $resultado = false;
            
        // Obtener extensión del archivo 
            $dot = (strlen($imagefile) - strrpos($imagefile, ".")-1)*(-1);
        
            $ext = substr($imagefile, $dot);
            $ext = strtolower($ext);    
                
        // Chequear que las imágenes sean de alguno de los formatos soportados. Por medio de la función strtolower(), pasamos la extensión a minúsculas
            
            if( $ext == "gif") {
                if ($src_img = imagecreatefromgif($imagefile)) {
                    $resultado = $src_img;
                }
            } else if( $ext == "jpg" || $ext == "jpeg") {
                if ($src_img = imagecreatefromjpeg($imagefile)) {
                    $resultado = $src_img;
                }
            } else if( $ext == "png") {
                if ($src_img = imagecreatefrompng($imagefile)) {
                    $resultado = $src_img;
                }
            } else if( $ext == "jpg" || $ext == "jpeg") {
                if ($src_img = imagecreatefromjpeg($imagefile)) {
                    $resultado = $src_img;
                }
             }
            
            return $resultado;            
        }
        
        
    // genera una imagen thumbnail a partir de otra
    
        function generate_thumbnail($imagefile, $ancho, $calidad = 100)
        {
        // leemos el fichero de la imagen
        
            if( ($src_img = imagecreatefromfile($imagefile)) == false )
            {
                exit;
            }
            else
            {
                $hw = getimagesize($imagefile);
                
            // $ancho es el ancho para la nueva imágen
                $new_w = $ancho;
                
            // A través del cociente entre el alto y el cociente entre la anchura original y la anchura nueva, mantenemos las proporciones de la imágen
                $new_h = $hw["0"]/($hw["1"]/$ancho);
            
            // Intentamos crear una imágen 'true color'. Esta función es soportada a partir de GD 2.0, por lo que en caso de no funcionar, se usará la función imageCreate
    
                $dst_img = @imagecreatetruecolor($new_h, $new_w);
                if(!$dst_img) {
                  $dst_img = imageCreate($new_h, $new_w);
                }
                
            // Se crea la imágen con los valores obtenidos y borramos las imágenes de la memoria
                imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_h,$new_w,imagesx($src_img),imagesy($src_img));
                imagejpeg($dst_img,"", $calidad);
                ImageDestroy($src_img);
                ImageDestroy($dst_img); 
            }
        }
        
        $file = "ace3.jpg";
        
        //echo("<img src=\"$file\" height=\"300\" width=\"200\"/>");
        header("Content-type: image/jpeg");
        generate_thumbnail($file, 100);