Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2010, 11:36
Zeyckler
 
Fecha de Ingreso: marzo-2010
Ubicación: Sevilla
Mensajes: 11
Antigüedad: 14 años, 1 mes
Puntos: 1
Exceso de memoria al redimensionar

Hola buenas, a ver si me podéis echar una mano. Estoy haciendo un sistema de subida de imágenes, 5 para ser exactos, pero al subir imágenes "grandes" (he probado con unas de 2,5MB) sale el error de "Allowed memory size of 134217728 bytes exhausted".

El método es:

Código PHP:
function redimensionarImagen($img_original$directorio_img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad) {

    
// crear imagen desde original
    
$img imagecreatefromjpeg($img_original);

    
// crear imagen nueva
    
$thumb ImageCreateTrueColor($img_nueva_anchura,$img_nueva_altura);

    
// redimensionar imagen original copiandola en la imagen
    
imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));

    
// guardar la imagen redimensionada donde indica $directorio_img_nueva con el nombre y directorio (Ej. C:\Pagina wel\imagen.jpeg
    
imagejpeg($thumb,$directorio_img_nueva,$img_nueva_calidad);

    
// Libera memoria
    
imagedestroy($thumb);
    
imagedestroy($img);

Y como ejemplo del tratamiento que le hago a la imagen:

Código PHP:
$imagen1=imagecreatefromjpeg($_FILES['foto1']['tmp_name']);
$anchuraimagen1=imagesx($imagen1);
$alturaimagen1=imagesy($imagen1);

if (
$anchuraimagen1>=$alturaimagen1){
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_1micro.jpg'$anchuramicro$alturamicro$calidadminimicro);
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_mini.jpg'$anchuramini$alturamini$calidadminimicro);
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_1.jpg'$anchuragrande$alturagrande$calidadgrande);
}
else{
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_1micro.jpg'$anchuramicro$alturamicro$calidadminimicro);
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_mini.jpg'$anchuramini$alturamini$calidadminimicro);
    
redimensionarImagen($_FILES['foto1']['tmp_name'], '../'.$directorioimagenes.'piso'.$idpiso.'_1.jpg'360,480 $calidadgrande);

¿Qué forma habría de optimizar el funcionamiento para que no diese error?

Gracias de antemano, un saludo