Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2011, 15:20
rome96
 
Fecha de Ingreso: noviembre-2008
Mensajes: 103
Antigüedad: 16 años
Puntos: 0
problema con un upload de foto...

Hola a todos... Tengo un problema al subir fotos y pretender reducir su peso y tamaño.

Uso un codigo de php q anda de mil maravillas salvo ycuando la imagen pese pese menos de 3mb o tenga un ancho y o alto inferior a 3000 px.

Si excedo esto saltra el siguiente error:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3264 bytes) in C:\xampp\htdocs\info_lh\carga_anuncio.php on line 52

Pasa en varios servidores q no dejan modificar la memoria en php.ini

Hay alguna forma de achicar las fotos sea cual sea su tamaño o hay alguina forma de saber el alto el ancho del archivo q trato de subir? se averiguar el peso pero no esto.

EL codigo q uso para reducir es:

//funcion reduce fotos

function redimensionar_imagen($imagen, $nombre_imagen_asociada)


{



//indicamos el directorio donde se van a colgar las imágenes
$direc = 'utilidades/fotos_categorias/';
$directorio = "";
//establecemos los límites de ancho y alto
$nuevo_ancho = 600;
$nuevo_alto = 600;

//Recojo información de la imágen
$info_imagen = getimagesize($imagen);
$alto = $info_imagen[1];
$ancho = $info_imagen[0];
$tipo_imagen = $info_imagen[2];

//Determino las nuevas medidas en función de los límites
if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
{
if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
{
$nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
}
else
{
$nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
}
}
else //si la imagen es más pequeña que los límites la dejo igual.
{
$nuevo_alto = $alto;
$nuevo_ancho = $ancho;
}

// dependiendo del tipo de imagen tengo que usar diferentes funciones
switch ($tipo_imagen) {
case 2: //si es jpeg …
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromjpeg($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;


}
return true; //si todo ha ido bien devuelve true

}

//fin funcion reduce fotos


desde ya muchas gracias!!!

Rome