Foros del Web » Programando para Internet » PHP »

Desesperado con los thumbnails

Estas en el tema de Desesperado con los thumbnails en el foro de PHP en Foros del Web. Hola amigos de foros del web, necesito generar miniaturas de las fotos originales en un sitio web que me encuentro desarrollando... Estoy utilizando Servidor Linux ...
  #1 (permalink)  
Antiguo 07/07/2006, 17:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 57
Antigüedad: 13 años, 6 meses
Puntos: 0
Desesperado con los thumbnails

Hola amigos de foros del web, necesito generar miniaturas de las fotos originales en un sitio web que me encuentro

desarrollando... Estoy utilizando Servidor Linux Centos 4.3, Php 4.3.9, Apache 2.0.52 y la libreria GD version bundled (2.0.28

compatible) segun php_info...

El problema es que no encuentro la forma de hacer las miniaturas automaticamente con php, he leido varios articulos de este

sitio, he probado las soluciones que aqui se plantean pero nada, lo hice en Windows y funcion perfectamente, pero en Linux no

me funciona pero tampoco salen errores, no sale la miniatura...

Revise el php_info y tiene la siguiente configuracion:

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled


ademas en el php.ini agregue la linea:

extension=gd.so;

Logicamente reinicie apache pero sigue sin funcionar, sera que en Linux no se pueden generar thumbnails???

Este es el codigo (los dos scripts se encuentran en el mismo directorio al igual que la foto llamada foto.jpg):

Archivo generar_miniatura.php:

<?php
$filename = "foto.jpg";
$tamano=80;

//imagen desde el archivo jpg
$img = imagecreatefromjpeg($filename);

// Tamaño del Thumbanil (de la imagen a generar ..)
//$picsize = 100;
$picsize = $tamano;

// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);

// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;

// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);

// Se crea la mascara de la imagen nueva
$dst_img = ImageCreateTrueColor($new_w,$new_h);

// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$n ew_h,imagesx($img),imagesy($img));

// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG
// El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen.
imagejpeg($dst_img,'',100);
?>


Y este es el codigo para mostrar la foto miniatura:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="">
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="generar_miniatura.php" border="0"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

</form>
</body>
</html>


Si alguien me pudiera dar una mano con esto se lo agradeceria demasiado... Un saludo
  #2 (permalink)  
Antiguo 08/07/2006, 00:37
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 14 años, 11 meses
Puntos: 8
falta lo mas importante en generar_miniatura.php
indicar q lo q imprimes es una imagen

header('Content-type: image/jpeg');
  #3 (permalink)  
Antiguo 08/07/2006, 09:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 57
Antigüedad: 13 años, 6 meses
Puntos: 0
sigue sin funcionar

Hola Nefertiter... agradeciendote mucho or tu ayuda.

Ya coloque lo que me indicaste y no me funciona... el codigo del script generar_miniatura.php quedo la siguiente forma:

$filename = "foto.jpg";
$tamano=80;

//imagen desde el archivo jpg
$img = imagecreatefromjpeg($filename);

// Tamaño del Thumbanil (de la imagen a generar ..)
$picsize = $tamano;

// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);

// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;

// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);

// Se crea la mascara de la imagen nueva
$dst_img = imagecreatetruecolor($new_w,$new_h);

// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$n ew_h,imagesx($img),imagesy($img));

// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG

header('Content-type: image/jpeg');
imagejpeg($dst_img,'',100);


Tienes otra idea de que pueda ser... Un saludo.
  #4 (permalink)  
Antiguo 08/07/2006, 14:01
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 14 años, 11 meses
Puntos: 8
a mi me anduvo esto:

COPIALO TAL CUAL

Código PHP:
<?
$filename 
"foto.jpg";
$tamano=80;

//imagen desde el archivo jpg
$img imagecreatefromjpeg($filename);

// Tamaño del Thumbanil (de la imagen a generar ..) 
$picsize $tamano

// Se obtienen los datos del ancho y alto de la imagen. 
$new_w imagesx($img); 
$new_h imagesy($img); 

// Se calcula la relación alto/ancho 
$aspect_ratio $new_h $new_w

// Se ajusta al nuevo tamaño 
$new_w $picsize
$new_h abs($new_w $aspect_ratio);

// Se crea la mascara de la imagen nueva 
$dst_img imagecreatetruecolor($new_w,$new_h); 

// Se copia y reajusta el nuevo tamaño en la nueva imagen. 
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG 

header('Content-type: image/jpeg');
imagejpeg($dst_img,'',100);
?>
  #5 (permalink)  
Antiguo 10/07/2006, 08:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 57
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola Nefertiter, ante todo gracias por la colaboracion...

Mira copie tu codigo tal cual lo sugeriste pero sigue sin funcionar, yo creeria que el problema es mas de fondo, por ahi con las versiones de PHP y la libreria GD o quizá faltaria configurar el php de alguna manera especifica diferente a la que y tengo... Si pudieras decirme las versiones que manejas y alguna configuracion especial que tu sepas que se debe hacer.Tambien si me pudieras decir la forma de comprobar que la libreria GD esta funcionando....

Gracias amigo...Un saludo
  #6 (permalink)  
Antiguo 10/07/2006, 09:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 57
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola amigos de forosdelweb...

Al parecer ya encontre la solucion y la quiero compartir con ustedes para evitarles el dolor de cabeza que yo tuve:

Debido a que al ejecutar el script imagen.php no aparecía ningun error en pantalla pero tampoco aparecia la miniatura, lo primero que hice fue ingresar al archivo php.ini ubicado en el directorio/etc, allí busque la directiva display_error y la coloque en On es decir quedo de la siguiente forma:

display_errors=On


Luego volvi a ejecutar el archivo imagen.php y apareció el siguiente error:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 7776 bytes)

Entonces pude notar que el problema era la cantidad de memoria asignada para el script, que por defecto es de 8Mb. Segun esto procedi a aumentar este valor, para lo cual abrí nuevamente el archivo php.ini para cambiar el valor de la directiva memory_limit y quedo de la siguiente forma:

memory_limit=64 Mb

Luego reinicie el servidor apache y listo por fin funcionó..

Espero haber sido claro en mi explicacion... Un saludo

Este el mejor sitio de ayuda en Internet....
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 22:25.