Bueno, quizás de aquí puedas sacar algo interesante, esta función la hice hace tiempo y me funciona bastante bien.
   Código PHP:
    //Funcion que crea los thumbnails de las fotos
function creathumbnail($imagen){
    global $informacion;
    global $thumbx;
    global $carpeta_imagenes;
    global $carp_thumbnail;
    global $calidad;
    global $thumbymax;
    $original = $carpeta_imagenes.$imagen;
    $original = imagecreatefromjpeg($original);
    $ancho = imagesx($original);
    $alto = imagesy($original);
    $thumby = $thumbx/$ancho*$alto;
    if($thumby>$thumbymax){
        $thumby = $thumbymax;
        $thumbx = $thumby/$alto*$ancho;
    }
    if($informacion){
        echo "Ancho: ".$ancho."<br>";
        echo "Alto: ".$alto."<br>";
        echo "Thumbx: ".$thumbx."<br>";
        echo "Thumby: ".$thumby."<br>";
        }
    $thumb = imagecreatetruecolor($thumbx,$thumby);
    $src = $carp_thumbnail."t_".$imagen;
    imagecopyresampled($thumb, $original, 0, 0, 0, 0, $thumbx, $thumby, $ancho, $alto);
    imagejpeg($thumb,$src,$calidad);
    if($informacion){
            echo "Ha entrado en la función creathumbnail<br>";
            echo "Imagen original: ".$original."<br>";
            echo "Imagen thumbnail: ".$src."<br>";
            }
} 
    
  Léelo detenidamente, y recuerda que $imagen = $_FILES['imagen']; 
Lo que ves de $información es para el desarrolo del script, no le hagas caso. 
Saludos,