daniè, non avevo mai usato le gd...
vi posto il codice completo e funzionante della paginonza 
Codice PHP:
<?php
function image_resize( $img_src , $img_dst , $img_dst_width ) {
// controlla prima che il file esiste
if ( !file_exists( $img_src ) ) {
echo "impossibile trovare l'immagine specificata ";
} else {
// ricavo i dati dal file immagine
list( $img_src_width , $img_src_height , $img_src_type , $img_src_attr ) = getimagesize( $img_src );
// in base al tipo creo l'immagine da ridimensionare
switch( $img_src_type ) {
case 1: $img_tmp = imageCreateFromGIF( $img_src ); break;
case 2: $img_tmp = imageCreateFromJpeg( $img_src ); break;
case 3: $img_tmp = imageCreateFromPNG( $img_src ); break;
}
if ( $img_src_width <= $img_dst_width ) {
// se l'immagine ha larghezza inferiore a quella voluta, a che serve stringerla?
return $img_tmp;
} else {
// se l'immagine non è gif, jpg o png...
if ( !isset( $img_tmp ) ) {
echo "l'immagine richiesta non è GIF, Jpeg o PNG. Non posso proseguire.";
} else {
// matematica...
$img_dst_height = ceil( $img_dst_width / ( $img_src_width / $img_src_height ) ) ;
//////////////////////////////////////////
// //
// creo la nuova immagine in true color //
// //
//////////////////////////////////////////
$img_new = ImageCreateTrueColor( $img_dst_width , $img_dst_height );
// ridimensiono l'immagine creata prima coi nuovi dati
ImageCopyResampled( $img_new , $img_tmp , 0, 0, 0, 0, $img_dst_width , $img_dst_height , $img_src_width , $img_src_height );
unset( $img_tmp );
return $img_new;
}
}
}
}
function image_write( $img_tmp , $img_dst ) {
if ( $img_dst == NULL ) { header( 'Content-Type: image/jpeg' ); }
imagejpeg( $img_tmp , $img_dst , 100 );
}
// sorgente
$img_src = "img.jpg";
// destinazione
$img_dst = NULL;
// $img_dst = "400.jpg";
// nuova larghezza
$img_dst_width = 150;
// ottengo l'immagine ridimensionata
$img_tmp = image_resize( $img_src , $img_dst , $img_dst_width );
// richiamo la funzione della stampa dell'immagine
image_write( $img_tmp , $img_dst );
// libero la memoria
unset( $img_tmp );
unset( $img_src );
unset( $img_dst );
unset( $img_dst_width );
?>