le funzioni che ti servono sono tutte qui:
codice:
copy($file_sorgente, $percorso_nuovo_file); //copi l'immagini in un nuovo file
list($width, $height, $type, $attr) = getimagesize($percorso_nuovo_file); // Ottengo le informazioni sull'immagine di partenza
$new_width = $width / 2 ; // scalatura della larghezza della foto
$new_height = $height / 2 ; // scalatura dell'altezza della foto
$thumb = imagecreatetruecolor($new_width, $new_height);
$source = imagecreatefromjpeg($percorso_nuovo_file);
// Creo un file immagine vuoto (sfondo nero) versione scalata
imagecopyresized($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //crea l'immagine scalata dalla vecchia alla nuova
imagejpeg($thumb, $percorsofotosmall, 95);// salva copia sopra il nuovo file l'immagine ridimensionata con parametro compressione immagine
magari c'è qualche errore di battitura o confusione nel testo, le uso in uno script ma ho dovuto modificarlo per le tue esigenze senza averlo fatto partire