Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2011, 09:19
JaV1
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lepe
Mensajes: 23
Antigüedad: 14 años, 4 meses
Puntos: 0
Fallo al intentar redimensionar una imagen....

Hola muy buenas, al intentar redimensionar una imagen el servidor me devuelve este error

Fatal error: Out of memory (allocated 31457280) (tried to allocate 16000 bytes) in /homepages/15/d352575685/htdocs/Juani/redimensionar.php on line 35



os dejo el script.

Redimensionar.php
Código PHP:
<?php
function redimensionar($alto,$ancho,$destinofoto,$nombrefoto)
{
  
ini_set('memory_limit''100M');
  
$origen=$destinofoto.$nombrefoto;
  
$destino=$destinofoto."1-".$nombrefoto;
  
$destino_temporal=tempnam("Perros/","tmp");
  list(
$ancho$alto) = getimagesize($origen);
  while(
$ancho "1600" || $alto "1600")
  {
    
$ancho=$ancho/2;
    
$alto=$alto/2;
  }
  
redimensionar_jpeg($origen$destino_temporal$ancho$alto100);

  
// guardamos la imagen
  
$fp=fopen($destino,"w");
  
fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
  
fclose($fp);
  
//delete($destinofoto.$nombrefoto);
  //rename($destinofoto."1-".$nombrefoto,$destinofoto.$nombrefoto);
  
unlink($destino_temporal);
  
unlink($origen);
  
rename($destino,$origen);




}

  function 
redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad)
  {
    
set_time_limit(300);
    
ini_set('memory_limit''100M');

    
ini_set('realpath_cache_size''10M');


      
// crear una imagen desde el original
      
$img ImageCreateFromJPEG($img_original);
      
// crear una imagen nueva
      
$thumb imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
      
// redimensiona la imagen original copiandola en la imagen
      
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));
       
// guardar la nueva imagen redimensionada donde indicia $img_nueva
      
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
      
ImageDestroy($img);

  }


?>





Y aquí os dejo el codigo que lo llama.

Código PHP:
<?php
 set_time_limit
(300);
 
ini_set('memory_limit''20000M');
if (isset(
$_REQUEST['enviado']))
{
    include(
"conexion.php");
    include(
"redimensionar.php");
    
$query="Select * from perros where Nombre like '".$_REQUEST['Nombre']."'";
      
$result=mysql_query($query,$c1);
      
$linea=mysql_fetch_row($result);
      if(
$linea==null)
      {
             
//Linea con los datos del perro.
            //Creamos la carpeta con el nombre del perro.
            
$directorio=  "Perros/".$_REQUEST['Nombre'];
            
mkdir($directorio);

             if (!empty(
$_FILES['foto']['name']))
             {
                    
$foto=  "Perros/".$_REQUEST['Nombre']."/".$_FILES['foto']['name'];
                  
$destinofoto="Perros/".$_REQUEST['Nombre']."/";
                  
$nombrefoto=$_FILES['foto']['name'];
                  if(
copy($_FILES['foto']['tmp_name'], $foto))
                  {
                    list(
$ancho$alto) = getimagesize($foto);
                    if(
$ancho "1600" || $alto "1600")
                    {
                      
redimensionar($alto,$ancho,$destinofoto,$nombrefoto);
                    }
                       
$query="Insert into perros values('','".$_REQUEST['Nombre']."','".$_REQUEST['Nacimiento']."','".$_REQUEST['Estado']."','".$_REQUEST['Padre']."','".$_REQUEST['Madre']."','".$_REQUEST['Raza']."','".$foto."','".$_REQUEST['Sexo']."')";
                       
mysql_query($query,$c1);

                          echo
"<center><big>Los datos se han introducido correctamente.</big></center>";
                echo 
'<META http-equiv="refresh" content="3;URL=admin.php">';
                  }
                  else
                  {
                          echo
"<center><big>Los datos no se han introducido correctamente.</big></center>";
                echo 
'<META http-equiv="refresh" content="8;URL=admin.php">';
                  }

             }
             else
             {
                
$query="Insert into perros values('','".$_REQUEST['Nombre']."','".$_REQUEST['Nacimiento']."','".$_REQUEST['Estado']."','".$_REQUEST['Padre']."','".$_REQUEST['Madre']."','".$_REQUEST['Raza']."','','".$_REQUEST['Sexo']."')";
                
mysql_query($query,$c1);
                echo
"<center><big>Los datos se han introducido correctamente.</big></center>";
                echo 
'<META http-equiv="refresh" content="3;URL=admin.php">';

             }
      }
      else
      {
        echo 
"<center><h1>Ya existe un perro con ese nombre.</h1></center>";
         echo 
'<META http-equiv="refresh" content="5;URL=admin.php">';
      }
}
else
 echo 
'<META http-equiv="refresh" content="0;URL=admin.php">';
?>