riporto il codice direttamente da php.net/imagecopyresampled
Codice PHP:
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
le due variabili $image e $image_p sono create con le funzioni imagecreate... che restituiscono ambedue due resource a due immagini mappate in memoria (la prima vuota e la seconda il file che vuoi rimpicciolire)
a mio avviso è meglio se leggi meglio la guida della funzione al link sopra citato oppure se prendi una guida direttamente sulle gd, cosi farai meno fatica a cominciare quell'argomento (o al max prendi direttamente lo script di quella pagina e lo modifichi )