Comunidad de diseño web y desarrollo en internet online

Generar miniaturas

Citar            
MensajeEscrito el 24 Feb 2010 10:25 pm
Hola a todos y antes que nada gracias por leer mi tema.

Resulta que estoy haciendo una página donde puedan mostrarse las imágenes en pequeño, es decir tengo las imágenes "grandes" en una carpeta, las coje de ahí y las redimensiona.
Lo que hago es pasar un parámetro con la ruta de la imagen que está en una bbdd a un archovo llamado miniatura.php, éste archivo devuelve la imagen ya redimensionada y la muestra.
Escribo y comento un poco el código:

Porción de la página que muestra el listado de imágenes:

<?php
$nombre2=$row_listado['foto'];
$nombre2="miniatura.php?nombre=img/grandes/" . $nombre2;
?>

<img src="<?php echo $nombre2; ?>" />

Lo que hago es declarar la variable nombre2 que coje el nombre de la imagen por ejemplo 001.jpg, después concatena la ruta donde estan las imágenes con el nombre de la imagen y esto lo pasa como parámetro a miniatura.php y lo vuelve a gusrdar como nombre2, de modo que lo que muestra despues es nombre2, es decir la imagen devuelta por el archivo miniatura.php

Archivo miniatura.php

<?php
//ancho y alto de la miniatura
$ancho=100;
$alto=100;
//recibir el nombre de la imagen
$nombre=$_GET['nombre'];
//poner imagen original en memoria
$original=imagecreatefromjpeg($nombre);
//analizar el tamaño de la imagen
$tam=getimagesize($original);
$ancho_original=$tam[0];
$alto_original=$tam[1];
//calcular el factor de escala
$escala_1=1;
$escala_2=1;
$escala_1=$ancho/$ancho_original;
$escala_2=$alto/$alto_original;
//ver si la imagen es horizontal o vertical compararando el alto y el ancho
if($alto_original >$ancho_original)
$escala_1=$escala_2;
//calcular nuevo tamaño
$imagen_hori=ceil($ancho_original*escala_1);
$imagen_vert=ceil($alto_original*escala_1);
//crear imagen pequeña vacía con el nuevo tamaño
$final=imagecreatetruecolor($imagen_hori,$imagen_v ert);
//copiar el original en la pequeña escalada
imagecopyresized($final,$original,0,0,0,0,$imagen_ hori,$imagen_vert,imagesx($original),imagesy($orig inal));
//mostrar la imagen
Header("content-type:image/jpg");Imagejpeg($final);
imagedestroy($final);
?>

El problema es que cuando hace el listado no muestra las imagenes, sale el símbolo X como si no la encontrara.
¿¿Alguien sabe donde puede estar el error??

Muuchasssss gracias de antemano !! :D

Por educhip

6 de clabLevel



Genero:Masculino  

diseño web

firefox
Citar            
MensajeEscrito el 27 Feb 2010 07:44 pm
Hola. No lo veo muy claro al primer código.
Verifica que en tu tabla se guarde la referencia tanto de la imagen como del thumb (miniatura). Probablemente generes el thumb, pero no se almacene en la tabla. Dónde guardas el thumb generado? Me equivoco o estás reescribiendo la original con el mismo nombre que la miniatura?
Yo haría otro procedimiento: antes de enviar la orden de INSERT INTO... genero también el thumb.
a) Cargué la imagen
b) Cuando la imagen está cargada en el servidor, genero la miniatura con una función, y lo almaceno en una variable, luego por POST INSERTO en la bd imagen y miniatura.

Por aiteok

3 de clabLevel



 

Argentina

chrome
Citar            
MensajeEscrito el 27 Feb 2010 08:32 pm
Muchas gracias aeteok, pero ya lo solucioné.
El problema estaba en las líneas:

$imagen_hori=ceil($ancho_original*escala_1);
$imagen_vert=ceil($alto_original*escala_1);

Horas calentandome la cabeza, me dio por depurar el codigo paso a paso y faltaba en símbolo $ delante de escala_1, para matarme vaya, y bueno algún retoque mas que le he dao, pero vaya que ya va perfectamente.
Muchas gracias de nuevo.

Por educhip

6 de clabLevel



Genero:Masculino  

diseño web

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.