Mira, la funcion ImageCopyResampled() te va a permitir dejar las imagenes con una calidad óptima... Aquí te dejo un ejemplo que ocupé para una página:
Código PHP:
if ($tipo == "servicios"){
if (!file_exists($direccion)) { $direccion = $carfotos . "nech.jpg";}
$fuente = @imagecreatefromjpeg("administracion/fotos/$id");
$imgAncho = imagesx ($fuente);
$imgAlto = imagesy($fuente);
if ($imgAlto == $imgAncho){$alto = 150; $ancho = 150;}
if ($imgAncho > $imgAlto){$ancho = 150; $alto = $ancho * $imgAlto / $imgAncho;}
if ($imgAlto > $imgAncho){$alto = 150; $ancho = $alto * $imgAncho / $imgAlto;}
$imagen = ImageCreateTrueColor($ancho, $alto);
ImageCopyResampled($imagen, $fuente, 0, 0, 0, 0, $ancho, $alto, $imgAncho, $imgAlto);
imageJpeg($imagen, '', 70);
}