Spero che questo ti possa essere di aiuto.
Dovrebbe funzionare, anche se non l'ho ancora provato.

codice:
 
<?php
//--------------------------------------------------------------------------
// crea l'immagine thumbnail (SOLO JPEG)
function create_thumbnail($filesrc,$filedst,$useratio,$maxwidth,$maxheight) 
{ 
	/***
		$filesrc := nome del file dell'immagine sorgente
		$filedst := nome del file di destinazione
		$useratio := 
			impostato a true permette di mantenere il rapporto larghezza/altezza
			per la nuova immagine  
		$maxwidth := larghezza massima per la nuova immagine
		$maxheight := altezza massima per la nuova immagine
		**/

	// Questo viene fatto con le immagini di tipo jpg
	$size = getimagesize($filesrc); 
	$source = imagecreatefromjpeg($filesrc); 	
	/** 
		Calcolo le dimensioni (larghezza, altezza) della nuova immagine con
	 	size[0] e size[1] che contengono larghezza e altezza dell'immagine
	 	sorgente
		**/
	$sizenew = new_size($size[0],$size[1],$maxwidth,$maxheight);
	
	/**
		sizenew[0] = larghezza nuova  => $w2
		sizenew[1] = altezza nuova    => $w1
		$useratio :
			vale true o false a seconda se si vuole mantenere il rapporto
			alezza/larghezza dell'immagine sorgente (altrimenti la fa con le dimensioni
			massime ($maxwidth,$maxheight) passate alla funzione)
		**/

	if($useratio) {
		$dest = imagecreatetruecolor($sizenew[0], $sizenew[1]);
		imagecopyresampled($dest, $source, 0, 0, 0, 0, $sizenew[0], $sizenew[1], $size[0], $size[1]); 
	}
	else {
		$dest = imagecreatetruecolor($maxwidth, $maxheight);
		imagecopyresampled($dest, $source, 0, 0, 0, 0, $maxwidth, $maxheight, $size[0], $size[1]); 
	}
	
	// si salva la nuova immagine creata
	imagejpeg($dest, $filedst);
} 

//--------------------------------------------------------------------------
// calcola larghezza e altezza della nuova immagine
function new_size($width,$height,$maxwidth,$maxheight) {

	$Rx = $width/$maxwidth;
  $Ry = $height/$maxheight;
 
  // decido il rapporto di compressione
  if($Rx > $Ry) {
  	$newx = ceil($width/$Rx);
	 	$newy = ceil($height/$Rx);
  }
  else {
  	$newx = ceil($width/$Ry);
	  $newy = ceil($height/$Ry);
  }
	
	$sizenew = array($newx,$newy);
	return $sizenew;
}
?>
Fammi sapere
ByeZ