14/03/2011, 15:20
|
| | 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 |