Zamanında şöyle bir fonksiyon yazmıştım. Biraz karışık, daha basiti vardır muhakkak...


function resimboyutlandir($resim,$max_en,$max_boy){
 $boyut = @getimagesize($resim);
     $en    = $boyut[0];
     $boy   = $boyut[1];

     # Yeni boyutlar
	 if($en==0) { $en=1; }
	 if($boy==0) { $boy=1; }
    $x= $max_en / $en ;
	$y = $max_boy/ $boy;
	
	if(($en <= $max_en) && ($boy <= $max_boy)){
	$sonen=$en;
	$sonboy=$boy;
	}
	
	elseif(($x * $boy) <= $max_boy){
	$sonen=$max_en;
	$sonboy=ceil($x*$boy);
	}
	
	else {
	$sonboy=$max_boy;
	$sonen=ceil($y*$en);
	}

$abc=" width='$sonen' height='$sonboy' ";

return $abc;
}

Bu fonksiyona thumbnail işlevi ekleyerek daha da geliştirebilirsin...