Pues esta bastante enredado, pero aqui tienes una funcion que hize yo a partir de un tutorial de la web, este con una imagen te hace 2, una por ejemplo de 30 px width para thumbnails y otra de 600 px width, soporta jpg, gif, wbmp y png, requiere que tengas librerias GD, es configurable:
Código PHP:
function subir($source,$nombre_sinrepetir,$medidas_imagenchica,$medidas_imagendetalle,$carpeta_detalle,$carpeta_th){
$dest=$carpeta_th.$nombre_sinrepetir;
$im_info = getimagesize($source);
switch($im_info[2]) {
case 1:
$imagen = imagecreatefromgif($source); break;
case 2:
$imagen = imagecreatefromjpeg($source); break;
case 3:
$imagen = imagecreatefrompng($source); break;
case 15:
$imagen = imagecreatefromwbmp($source); break;
}
// Definimos la medida máxima
$th_max = $medidas_imagenchica; // de la muestra (thumbnail)
$det_max = $medidas_imagendetalle; // de la imagen detalle
// Evaluamos si la imagen es horizontal
if($im_info[0]>$im_info[1]) {
// Definimos las medidas de las imagenes
$th_w = $th_max;
$th_h = ($im_info[1]/$im_info[0])*$th_max;
$det_w = $det_max;
$det_h = ($im_info[1]/$im_info[0])*$det_max;
} else {
$th_w = ($im_info[0]/$im_info[1])*$th_max;
$th_h = $th_max;
$det_w = ($im_info[0]/$im_info[1])*$det_max;
$det_h = $det_max;
}
// Creamos las imágenes
$thumb = imagecreatetruecolor($th_w,$th_h);
$detalle = imagecreatetruecolor($det_w,$det_h);
// Copiamos la original escalada
imagecopyresampled($thumb,$imagen,0,0,0,0, $th_w,$th_h,imagesx($imagen),imagesy($imagen));
imagecopyresampled($detalle,$imagen,0,0,0,0, $det_w,$det_h,imagesx($imagen),imagesy($imagen));
// Destruimos la imagen original
imagedestroy($imagen);
// Damos salida a nuestros archivos
imagejpeg($thumb,$dest,60);
imagejpeg($detalle,$carpeta_detalle.$nombre_sinrepetir,60);
// Destruimos las imagenes temporales
imagedestroy($thumb);
imagedestroy($detalle);
}
//se usa de la siguiente manera subir(fuente de la imagen,nombre de la imagen,ancho del thumbnail, ancho de la imagen detalle,carpeta para la imagen detalle,carpeta para el thumbnail)
subir($HTTP_POST_FILES['imagen']['tmp_name'],$HTTP_POST_FILES['imagen']['name'],350,541."carpeta/imagenes","carpeta/thumbnail");
//las carpetas deben tener permisos 777
//no pases los $HTTP_POST_FILES asi, valida el tipo, su tamaño, etc...
//si quieres pasar a base de datos la ubicacion de tu imagen
//el VALUE seria "img/usuarios/$HTTP_POST_FILES['imagen']['name']"
Recuerda que no debes poner los $HTTP_POST_FILES directamente, debes primero validarlos, ver si no se repite el nombre con algun archivo que se llame igual, etc... Espero les sirva.