Eso puedes hacerlo con la funcion imagecopyresampled de php, debes tener GD2 activado en la configuracion de php para que funcione.
mira hice esta funcion y la ocupo siempre que tengo que dejar al usuario enviarme imagenes... porque no falta el que te envia una de 2600x2600 O.o
Código :
function escala_jpg ($imagen_enserver, $max, $nueva_direccion, $calidad){
$imagen_real = imagecreatefromjpeg($imagen_enserver);
$ancho_real = imagesx($imagen_real);
$alto_real = imagesy($imagen_real);
### Meter dentro de un cuagro de x=y=$max
# if ( $ancho_real >= $alto_real ){$escala=$max/$ancho_real;}
# else {$escala=$max/$alto_real;}
### ANCHO MAXIMO x=max , y=escalado
$escala=$max/$ancho_real;
### ALTO MAXINO y=max , x=escalado
# $escala=$max/$alto_real;
#
$ancho_nueva = $ancho_real*$escala;
$alto_nueva = $alto_real*$escala;
$imagen_nueva = imagecreatetruecolor($ancho_nueva,$alto_nueva);
imagecopyresampled($imagen_nueva,$imagen_real,0,0,0,0,$ancho_nueva,$alto_nueva,$ancho_real,$alto_real);
imagejpeg($imagen_nueva,$nueva_direccion,$calidad);
}
PHP: La funcion ->
escala una imagen al tamaño maximo que desees
Copia la imagen escalada al directorio que desees
Deja la Imagen escala con la calidad JPG que desees [de 0 a 100]
para hacerla funcionar solo pones
Código :
escala_jpg ($_FILES['campo_de_imagen']['tmp_name'], 500, 'ruta/a/la/carpeta/de/destino/imagen.jpg', 100);
1- La funcion es solo para JPG
2- La funcion no borra el archivo de origen asi que conviene usar el archivo temporal del servidor que envio el usuario $_FILES['campo_de_imagen']['tmp_name'].
3- $max es el ANCHO maximo, ALTO maximo ó ANCHO o ALTO maxino de la imagen nueva creada segun tu elijas en la funcion.
[para desbloquearlo solo borra los # para descomentarlo y bloquea los que no uses].
4- La ruta de la nueva imagen debe ser relativa al archivo PHP desde donde uses la funcion.
5- $calidad es la calidad de jpg [para optimizarlo] 100 es la maxima calidad 0 (¿ó 1?) es la calidad mas baja, ahi ves tu segun necesites.
eso espero que te sirba