Foros del Web » Programando para Internet » PHP »

Problemas al hacer thumbnail

Estas en el tema de Problemas al hacer thumbnail en el foro de PHP en Foros del Web. Hola maestros, les cuento, estoy tratando de redimencionar algunas imágenes de mi sitio para agilizar la carga, el tema es que estoy trabajando en modo ...
  #1 (permalink)  
Antiguo 03/09/2007, 16:55
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Problemas al hacer thumbnail

Hola maestros, les cuento, estoy tratando de redimencionar algunas imágenes de mi sitio para agilizar la carga, el tema es que estoy trabajando en modo local por ahora con windows y el appserver 2.5.8 y comentando con un amigo mi problema me dice que puede ser algún bug de la versión de php o algo así pero no me convence del todo así que les pregunto, verán tengo este formulario:

Código PHP:
<?php
    
include('includes/functions.inc.php');
    
    
$stat $_GET['stat'];
    
$name $_FILES['file']['name'];
    
$dir "http://www.forosdelweb.com/images/gallery/";
    
$extention explode(".",$name);
    
$num count($extention) - 1;
    
    
$name_thum 'thumbnail_'.$name;
    
$dir_thum "http://www.forosdelweb.com/images/gallery/thumbnail/";
    
    if(
$name == "")
    {
        if(
stat == 1)
        {
?>
<p align="center">Error</p>
<?php
        
}
?>
<form action="b.php" method="post" enctype="multipart/form-data">
  <input name="file" type="file" size="51" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; font-weight: bold; border:0px solid;" /></td>
  <p align="center"><input type="submit" name="submit" value="Subir" /></p>
</form>
<?php    
    
}
    else
    {
        if(
$extention[$num] == "jpg")
        {
            if(@
move_uploaded_file($_FILES['file']['tmp_name'], $dir.$name))
            {
                
resize($dir.$name,$dir_thum.$name_thum,200,100,95);
?>
<br /><br /><img src="<?= $dir_thum.'thumbnail_'.$name ?>" />
<?php
            
}
            else
            {
                
header("Location: b.php?stat=1");
            }
        }
    }
?>
y esta es parte del archivo functions.inc.php

Código PHP:
...
function 
resize($img,$new_img,$new_width,$new_height,$quality)

    
$ext explode(".",$img);
    
$num count($ext) - 1;

    if((
$ext[$num] == "jpg") || ($ext[$num] == "jpeg"))
    {
        
$image ImageCreateFromJPEG($img);    
    }
    else if(
$ext[$num] == "gif")
    {
        
$image ImageCreateFromGIF($img);
    }
    else if(
$ext[$num] == "png")
    {
        
$image ImageCreateFromPNG($img);
    }
    else
    {
        echo 
"Error, extencion no permitida";
        die();
    } 
    
    
$thumbnail imagecreatetruecolor($new_width,$new_height); 

    
ImageCopyResized($thumbnail,$img,0,0,0,0,$new_width,$new_height,ImageSX($img),ImageSY($img)); 

    
ImageJPEG($thumbnail,$new_img,$quality);
    
ImageDestroy($imgage);

la cosa es que al ejecutar todo esto me sube la imagen pero al tratar de redimencionarla me sale este error

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 797 bytes) in C:\AppServ\www\ceii\includes\functions.inc.php on line 290

la linea 290 es

$image = ImageCreateFromJPEG($img);

en el archivo functions.inc.php, el tema es que no tengo ni la menor idea de lo que puede estar pasando, les agradeceria cualquier comentario u opinión

Saludos y gracias de antemano
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 03/09/2007, 17:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Problemas al hacer thumbnail

Tu error es que la imagen que estas tratando de procesar es mayor al limite de memoria que tiene PHP asignado.

Te recomiendo (si estas trabajando en forma local) aumentes este tamaño (ve el PHP.ini).

Ten en cuenta que una vez que tu subas tu sistema a tu host, es muy dificil que puedas modificar el php.ini.

Saludos.
  #3 (permalink)  
Antiguo 03/09/2007, 17:08
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Re: Problemas al hacer thumbnail

Gracias por tu respuesta amigo GatorV, eso es lo raro que en verdad se me olvido comentar en el tema... el php.ini esta configurado para tamaño máximo 8MB y la imagen con la que estoy probando es de solo 315KB entonces eso es lo que no me calza... de hecho por eso mi amigo cree que es un tema de un bug o algo así.

Saludos y gracias por la respuesta
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #4 (permalink)  
Antiguo 03/09/2007, 17:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Problemas al hacer thumbnail

Si ves PHP mismo te esta diciendo:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 797 bytes) in C:\AppServ\www\ceii\includes\functions.inc.php on line 290

Esta diciendo que trato de meter mas de 8 MB de memoria, por eso fallo, debes de revisar tu script y asegurarte que estas limpiando recursos, recuerda que el limite de memoria no solo es la imagen JPG, si no tambien si estas usando extensiones y funciones que ocupan mucha memoria tambien incluye eso.

Saludos.
  #5 (permalink)  
Antiguo 03/09/2007, 18:01
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Re: Problemas al hacer thumbnail

GatorV efectivamente era eso le puse 50MB para probarlo y funciono a la perfección ahora mi duda es, como puedo hacer para que se me adecue a 8MB?, al final reduje el script a esto:

b.php
Código PHP:
<?php
    
function resize($img,$new_img,$new_width,$new_height,$quality)
    { 
    
$ext explode(".",$img);
    
$num count($ext) - 1;

    if((
$ext[$num] == "jpg") || ($ext[$num] == "jpeg"))
    {
        
$image ImageCreateFromJPEG($img);    
    }
    else if(
$ext[$num] == "gif")
    {
        
$image ImageCreateFromGIF($img);
    }
    else if(
$ext[$num] == "png")
    {
        
$image ImageCreateFromPNG($img);
    }
    else
    {
        echo 
"Error, extencion no permitida";
        die();
    } 
    
    
$thumbnail imagecreatetruecolor($new_width,$new_height); 

    
ImageCopyResized($thumbnail,$image,0,0,0,0,$new_width,$new_height,ImageSX($image),ImageSY($image)); 

    
ImageJPEG($thumbnail,$new_img,$quality);
    
ImageDestroy($image);
}
    
    
$stat $_GET['stat'];
    
$name $_FILES['file']['name'];
    
$dir "images/gallery/";
    
$extention explode(".",$name);
    
$num count($extention) - 1;
    
    
$name_thum 'thumbnail_'.$name;
    
$dir_thum "images/gallery/thumbnail/";
    
    if(
$name == "")
    {
        if(
stat == 1)
        {
?>
<p align="center">Error</p>
<?php
        
}
?>
<form action="b.php" method="post" enctype="multipart/form-data">
  <input name="file" type="file" size="51" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; font-weight: bold; border:0px solid;" /></td>
  <p align="center"><input type="submit" name="submit" value="Subir" /></p>
</form>
<?php    
    
}
    else
    {
        if(
$extention[$num] == "jpg")
        {
            if(@
move_uploaded_file($_FILES['file']['tmp_name'], $dir.$name))
            {
                
resize($dir.$name,$dir_thum.$name_thum,200,100,95);
?>
<br /><br /><img src="<?= $dir_thum.'thumbnail_'.$name ?>" />
<?php
            
}
            else
            {
                
header("Location: b.php?stat=1");
            }
        }
    }
?>
y me manda el mismo error y ya no se como reducir mas el script.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #6 (permalink)  
Antiguo 03/09/2007, 18:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Problemas al hacer thumbnail

Es lo unico que tiene tu script? Porque entonces puede ser el formato de tu imagen jpeg, a pesar de tener 315 kb, al procesarla en formato RAW puede ser mas de 8 MB.

Saludos.
  #7 (permalink)  
Antiguo 03/09/2007, 18:13
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Re: Problemas al hacer thumbnail

si es lo único que tiene mi script, en todo caso con una imagen jpeg de 104K me corre de maravilla el script así que es lo que me dices (lo cual no entiendo mucho pero averiguaré al respecto), en todo caso, como puedo solucionarlo, la verdad de las cosas me urge un poco tener la solución a este problema.

saludos y gracias por tu valiosa ayuda
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.