El servidor debes tener instalado la libreria GD. Yo tengo un formulario donde subo una imagen, la guardo en una carpeta fotos cambiando su tamaño para que no ocupe mucho y dentro de esta carpeta hay otra que se llama miniaturas donde se guarda la miniatuta de la foto. El formulario cuando lo envio llama a un script donde aparte de cojer los datos que se ha rellenado en el formulario hago el tratamiento de la imagen así.
Código PHP:
<?
//----------FUNCIÓN PARA REDIMENSIONAR------------------------
function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura,$img_nueva_calidad) {
// crear imagen desde original
$img = ImageCreateFromJPEG($img_original);
// crear imagen nueva
$thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
ImageDestroy($img);
}
//------------IMAGEN 1-------------------------
// Guarda las caracteristicas de la imagen
//dir=al directorio y al nombre que quieres que se guarde la foto
$nombre_archivo1 = $_FILES['foto1']['name']; //foto1 es el nombre del campo en el formulario donde subo la imagen
$nombre_archivo1= str_replace(' ', '',$nombre_archivo1);
$dir='../../fotos/'.$nombre_archivo1;
$dirm='../../fotos/miniaturas/'.$nombre_archivo1;
if($nombre_archivo1!=''){
move_uploaded_file($_FILES['foto1']['tmp_name'], $dir);
redimensionar_jpeg($dir,$dir,550,415,75);//redimensiona la imagen
redimensionar_jpeg($dir,$dirm,150,113,75);//crea la miniatura
}
?>
Espero que te sirva