Foros del Web » Programando para Internet » PHP »

Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo ok)

Estas en el tema de Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo ok) en el foro de PHP en Foros del Web. que falla aqui: $f = opendir("../caras"); while($fichero=readdir($f)) { if ((!($fichero==".")) and (!($fichero=="..")) and (!($fichero=="Thumbs.db")) and (!($fichero=="gdla.php"))) { echo "Se va a generar el thumb: ./".$fichero."<br>"; ...
  #1 (permalink)  
Antiguo 07/11/2004, 20:41
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo ok)

que falla aqui:

$f = opendir("../caras");
while($fichero=readdir($f)) {
if ((!($fichero==".")) and (!($fichero=="..")) and (!($fichero=="Thumbs.db")) and (!($fichero=="gdla.php"))) {
echo "Se va a generar el thumb: ./".$fichero."<br>";
echo '<img src="'.$fichero.'".jpg">';
thumbjpeg($fichero, 125);
echo '<img src="tn_'.$fichero.'".jpg">';
}
}
}
closedir($f);


ESO DEVUELVE BIEN LOS NOMBRES DE LAS IMAGENES.


Y SI LLAMO A thumbjpeg("../caras/03_february.jpg", 200); la thumb se hace perfectamente...

Pero si hago el bucle (para que me redimensione todas las imagenes) no carga nada en el navegador (se ve una pagina como about:blank).

No se que coño es...
  #2 (permalink)  
Antiguo 08/11/2004, 02:22
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Lo que podríás hacer es hacerlo más sencillo con el siguiente cambio en el while y añadir el directorio a las imágenes:

Código PHP:
$f opendir("../caras");
while(
$fichero=readdir($f)) {
if (
strpos (".jpg",$fichero) != false) {
echo 
"Se va a generar el thumb: ./".$fichero."<br>";
echo 
'<img src="../caras/'.$fichero.'".jpg">';
thumbjpeg('../caras/'.$fichero125);
echo 
'<img src="../caras/tn_'.$fichero.'".jpg">';
}
}
}
closedir($f); 
Espero que sea esto.
  #3 (permalink)  
Antiguo 08/11/2004, 11:19
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 5 meses
Puntos: 0
Okis. Ya me funciona.

Aun asi tengo un problema...

la instruccion: $img = @imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");

Si la imagen es muy grande no hace nada y el script se detiene... (muy grande= 500 kb's)

Y si le quito la @ para ver el mensaje dice algo como: Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6536 bytes)
  #4 (permalink)  
Antiguo 08/11/2004, 13:02
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Probablemente con 8 Megas PHP no pueda con un jpeg de 500 kb... ¿puedes aumentar la memoria en el servidor?

¿En el bucle, después de crear cada thumbnail, quitas de la memoria la imagen en la que te has basado con ImageDestroy ($referencia)?
  #5 (permalink)  
Antiguo 08/11/2004, 13:21
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 5 meses
Puntos: 0
function thumbjpeg($imagen,$altura) {
$dir_thumb = "";
$prefijo_thumb = "tn";
$nombre=basename($imagen);
$camino=dirname($imagen)."/";
if (!file_exists($camino.$dir_thumb))
@mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio ".$camino.$dir_thumb);
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$n ombre)) {
echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
$datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");
$img = imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb .$nombre);
imagedestroy($img);
imagedestroy($thumb);
}
}




cada vez que encuentro una foto en el directorio llamo a esa func...

thumbjpeg($path.$galeria."/".$fichero, 125);
  #6 (permalink)  
Antiguo 08/11/2004, 13:28
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Otra cosa, mira que los jpeg no estén guardados como jpeg progresivo, por que a veces da problemas de este tipo.
  #7 (permalink)  
Antiguo 08/11/2004, 13:30
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 5 meses
Puntos: 0
como puedo saber lo que ocupa de memoria cada foto... o algo asin?

y 8 megas para 500 kb no llegan,.... pq?
  #8 (permalink)  
Antiguo 09/11/2004, 00:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Las imágenes en formato jpeg están comprimidas en el disco, pero para leerlas en memoria se tienen que descomprimir, así que la imagen puede ocupar en memoria hasta 10 veces más, por ejemplo, dependiendo de la compresión que hayas utilizado. Si abres una imagen en un programa de retoque fotográfico verás lo que ocupa en realidad en la barra de estado.

Esto tampoco es fiable al 100% de cara a tu programa ya que el mismo script de PHP utiliza la memoria en más cosas (eso seguro que hay usuarios más pro que lo explicarían mejor...). En tu ejemplo hay un momento en que tienes dos imágenes en memoria, la original y la reducida, así que si haces cálculos tienes que incluirlas en estos...

PS si yo no te lo resuelvo te aconsejo que abras un tema nuevo que se llame algo como "problemas de memoria con imagecreatefromjpeg" diciendo que ya hemos empezado aquí para no repetir cosas...
  #9 (permalink)  
Antiguo 09/11/2004, 08:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
DMR .. si tienes algo más que aportar .. hazlo en este mensaje .. no abras nuevos mensajes en referencia a este ..

Todavía no has dicho si tienes acceso a la configuración de PHP como para aumentar dicho valor.

Un saludo,
  #10 (permalink)  
Antiguo 09/11/2004, 09:40
DMR
 
Fecha de Ingreso: noviembre-2003
Mensajes: 105
Antigüedad: 20 años, 5 meses
Puntos: 0
Tengo acceso a php.ini en mi server local, pero en el remoto no... (host de pago)

La cosa es que imagenes de 1000x1000 aun las hace, pero 1500x1500 ya no... supongo que depende tb de la calidad 24 o 32 bytes... o algo asin.

De todas formas, lo que realmente me gustaria es ver si el imagexxxxxjpg este de marras tiene alguna opcion para no tener que descomprimir la jpg para crear una nueva o vete tu a saber.

O quizas algun comando en plan: resize("foto.jpg") :)
  #11 (permalink)  
Antiguo 09/11/2004, 11:18
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Cita:
Iniciado por Cluster
DMR .. si tienes algo más que aportar .. hazlo en este mensaje .. no abras nuevos mensajes en referencia a este ..

...
Lo siento, creo que lo he liado yo..
  #12 (permalink)  
Antiguo 19/12/2007, 21:45
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Re: Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo

Cita:
Iniciado por pintix Ver Mensaje
Las imágenes en formato jpeg están comprimidas en el disco, pero para leerlas en memoria se tienen que descomprimir, así que la imagen puede ocupar en memoria hasta 10 veces más, por ejemplo, dependiendo de la compresión que hayas utilizado. Si abres una imagen en un programa de retoque fotográfico verás lo que ocupa en realidad en la barra de estado...
Y cual es el motivo por el cual en LOCAL sí sube el gráfico con solo 8MB de limite ?

Esta bien que este mensaje tiene muchos meses atrás (+ de 20), pero como dice cluster NO SE NECESITA ABRIR UNO NUEVO...

Ok, las JPG son files COMPRIMIDOS, pero en LOCALHOT por que no dan problema al hacer un UPLOAD ?
  #13 (permalink)  
Antiguo 19/12/2007, 22:28
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: Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo

Por favor en un futuro abre un tema nuevo, este tema tiene mas de 3 años, y el problema es claro, tu script PHP no se compone solamente de tu imagen en upload, se compone de todos los plugins y componentes extras que usas que hacen que se incremente la memoria.

Saludos.
  #14 (permalink)  
Antiguo 05/01/2008, 02:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Re: Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo

GatorV,

podrias decirnos por que en local si funciona aunque el file sea muy grande ?
  #15 (permalink)  
Antiguo 05/01/2008, 14:28
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: Por favor ayuda. Es un problema muy tonto pero no se que ocurre (ya que esta todo

Todo depende de la configuracion de tu php.ini, los plugins, librerias cargadas y el codigo que utilices.

Tema cerrado.

Última edición por GatorV; 05/01/2008 a las 14:35
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.
Tema Cerrado




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