Foros del Web » Programando para Internet » PHP »

Galería de fotos: Problema y consulta

Estas en el tema de Galería de fotos: Problema y consulta en el foro de PHP en Foros del Web. Hola gente! Saqué de mi libro de aprendiz unos ejemplos para crear thumbails de imágenes pero algo no me funciona porque no me aparecen los ...
  #1 (permalink)  
Antiguo 30/06/2005, 13:32
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Galería de fotos: Problema y consulta

Hola gente! Saqué de mi libro de aprendiz unos ejemplos para crear thumbails de imágenes pero algo no me funciona porque no me aparecen los mismos. La librería GD la tengo activada. Ya hice pruebas con otros ejemplos.
Estos son los códigos:

galeria.php
Código PHP:
<?PHP
// Inicio Sección Configuracion ---------------------------------------------------
$DirFotos 'fotos/'//Directorio donde se encuentran las imagenes para la galeria
$CantxCol 4//Cantidad de columnas (Elegir este de acuerdo al tamaño que le vamos a dar a las imagenes)
// Fin Sección Configuracion ---------------------------------------------------

$Cant 0// Variable para ser usada como contador

$ContenidoDir opendir("$DirFotos"); // Abrimos el directorio 

$Archivo=readdir($ContenidoDir); // Leemos el primer archivo que será "." (recuerden la estructura de los directorios de MS-DOS)
$Archivo=readdir($ContenidoDir); // Leemos el segundo archivo que será ".." (recuerden la estructura de los directorios de MS-DOS)
// De aqui en mas los archivos serán los nombres y extensiones de las fotos que se encuentran en el directorio abierto.
?>
    <?php while ($Archivo=readdir($ContenidoDir)) { ?>
<img src="resize.php?img=<? echo $DirFotos.$Archivo?>" border="0">
        <?php $Cant $Cant 1
         if ((
$Cant $CantxCol) == 0){
         } else { 
         } 
         } 
    
closedir($ContenidoDir); //Cerramos el directorio para no utilizar recursos del servidor inutilmente.
    
?>
El archivo que las procesa es resize.php
Código PHP:
<?php 
// Nos aseguramos de que el archivo existe... 
if (!file_exists($img)) 
    { 
    echo 
"Error: No se puede encontrar la imagen: $img"
    exit(); 
    } 

// Creamos la imagen... 
$tmp imagecreatefromjpeg($img);     

if (
$tmp
    { 

// Cambiamos su tamaño
$ow  imagesx ($tmp);    // Ancho Original de la imagen
$oh  imagesy ($tmp);    // Alto Original de la imagen

if ($modo
    { 
        
// Redimensionamos NO proporcional
        
$nw $w
        
$nh $h
    } 
    else 
    { 
        
// Redimensionamos Proporcional
        
if ($Prop == 'w'
            { 
            
$nw  $w
            
$nh unpercent(percent($nw$ow), $oh);          
            } 
        else if (
$Prop == 'h'
            { 
            
$nh $h
            
$nw unpercent(percent($nh$oh), $ow); 
            } 
        else 
            { 
            
$nh $h
            
$oh $w
            } 
    } 

    
$out imagecreatetruecolor($nw$nh); 
    
imagecopyresampled($out$tmp0000$nw$nh$ow$oh);
    
imagedestroy($tmp); 
    } 
else 
    { 
    echo 
'ERROR: No se pudo crear la imagen fuente.'
    exit; 
    } 

if (
$out
    { 
    
header('Content-type: image/jpeg'); 
    
imagejpeg($out,'',$CalidadJPG); 
    
imagedestroy($out); 
    } 
else 
    { 
    echo 
'ERROR: No se pudo crear la imagen redimensionada.'
    } 
?>
Como decía antes, no aparecen los thumbails. Este mismo ejemplo lo tengo con el código para que al precionar sobre las imágenes se abra un pop up con la imagen en tamaño real y la imagen sí APARECE en la ventana... cosa rara, pero no los thumbails.
¿Puede ser que haya tipeado algo mal o que al código le falte algo? ¿Alguna sugerencia?

Muchas gracias por su dedicación y paciencia.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 30/06/2005, 14:08
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 12 años, 10 meses
Puntos: 1
De acuerdo

Despues de checar galeria.php se supone te genera los thumnails en columnas pero no genera columnas si no las imagenes seguidas.

Código PHP:
<?PHP
// Inicio Sección Configuracion ---------------------------------------------------
$DirFotos 'fotos/'//Directorio donde se encuentran las imagenes para la galeria
$CantxCol 4//Cantidad de columnas (Elegir este de acuerdo al tamaño que le vamos a dar a las imagenes)
// Fin Sección Configuracion ---------------------------------------------------

$Cant 0// Variable para ser usada como contador

$ContenidoDir opendir("$DirFotos"); // Abrimos el directorio

$Archivo=readdir($ContenidoDir); // Leemos el primer archivo que será "." (recuerden la estructura de los directorios de MS-DOS)
$Archivo=readdir($ContenidoDir); // Leemos el segundo archivo que será ".." (recuerden la estructura de los directorios de MS-DOS)
// De aqui en mas los archivos serán los nombres y extensiones de las fotos que se encuentran en el directorio abierto.
?>
    <?php while ($Archivo=readdir($ContenidoDir)) { ?>
<img src="resize.php?img=<? echo $DirFotos.$Archivo?>" border="0">
        <?php $Cant $Cant 1;
         if ((
$Cant $CantxCol) == 0){
         } else {
         }
         }
    
closedir($ContenidoDir); //Cerramos el directorio para no utilizar recursos del servidor inutilmente.
    
?>
resize.php le modifique muy poco ya genera los thumnails
dentro estan las variables
$calidad = "CALIDAD DE LOS THUMNAILS"
$altura = "MAXIMA ALTURA/THUMB"
$anchura = "MAXIMA ANCHURA/THUMB"

Código PHP:
<?php
$img 
$_GET['img'];

// Las imagenes se escalan proporcionalmente de acuerto a la altura
$altura 100;
$anchura 100;

// La calidad de los thumbnails
$calidad 70;

// Nos aseguramos de que el archivo existe...
if (!file_exists($img))
    {
        echo 
"Error: No se puede encontrar la imagen: $img";
        exit();
    }

// Creamos la imagen...
$tmp imagecreatefromjpeg($img);     

if (
$tmp)
    {
        
// Cambiamos su tamaño
        
$ow imagesx($tmp);// Ancho Original de la imagen
        
$oh imagesy($tmp);// Alto Original de la imagen
        
$proporcion $oh/$ow;
        
$nh $altura;
        
$nw $altura/$proporcion;
        
$out imagecreatetruecolor($nw$nh);
        
imagecopyresampled($out$tmp0000$nw$nh$ow$oh);
        
imagedestroy($tmp);
    }
    else
    {
        echo 
'ERROR: No se pudo crear la imagen fuente.';
        exit;
    }

if (
$out)
    {
        
header('Content-type: image/jpeg');
        
imagejpeg($out,'',$calidad);
        
imagedestroy($out);
    }
else
    {
        echo 
'ERROR: No se pudo crear la imagen redimensionada.';
    }
?>
*OJO* este codigo va generar el thum proporcionado de acuerdo a la altura si lo quieres hacer de acuerdo a el ancho de la imagen cambia donde dice:
Código PHP:
        $nh $altura;
        
$nw $altura/$proporcion
Y reemplazalo por
Código PHP:
    $nh $anchura*$proporcion;
    
$nw $anchura
Se me olvidaba esto solo funciona para imagenes JPEG y no creo que funcione para PNG y demas
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO

Última edición por tyo100; 30/06/2005 a las 14:21
  #3 (permalink)  
Antiguo 30/06/2005, 15:44
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Muchísimas gracias por tu orientación. A lo mejor me faltaba una pavada, pero ahora sí estoy bien encaminado. Funcionó de maravillas.
Quiero mostrarles que del código que me pasaste, modifiqué unas líneas para que directamente tome el tamaño real de la imagen, lo divida por 3 y me genere un thumbail al tamaño que necesitaba.
Por ahora, me funcionó muy bien, pero por favor, si me equivoqué o me falta algo, avísenme.
La página que procesa las imágenes quedaría así (chequeado por tyo100 y retocado por mi)

resize.php
Código PHP:
$img $_GET['img'];

// Nos aseguramos de que el archivo existe...
if (!file_exists($img))
    {
        echo 
"Error: No se puede encontrar la imagen: $img";
        exit();
    }

// Creamos la imagen...
$tmp imagecreatefromjpeg($img);     

if (
$tmp)
    {
            
// Calculo el tamaño de la imagen original
        
$tam_ancho imagesx($tmp);
        
$tam_alto imagesy($tmp);

        
// Calculo para reducirla al 70% aprox.
        
$ancho $tam_ancho /3;
        
$alto $tam_alto /3;
            
        
$out imagecreatetruecolor($ancho$alto); 
        
imagecopyresized($out$tmp0000$ancho$alto$tam_ancho$tam_alto);
       
imagedestroy($tmp);

    }
    else
    {
        echo 
'ERROR: No se pudo crear la imagen fuente.';
        exit;
    }

if (
$out)
    {
            
// Mostramos la imagen
            
header('Content-type: image/jpeg');
            
imagejpeg($out,'',80);
            
imagedestroy($out);

    }
else
    {
        echo 
'ERROR: No se pudo crear la imagen redimensionada.';
    } 
Ahora tengo un dilema porque dentro del directorio FOTOS/ tengo 30 fotos. 10 de un show, 10 de otro y 10 de otro. Si las codifico, no sé, de esta forma aa001, aa002, etc (para un show), bb001, bb002, etc. (para otro show), etc. ¿cómo hago para llamar solo a ese grupo y no a todo el directorio completo? ¿se puede?

Muchas muchas Gracias.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 01/07/2005, 07:55
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Porfas... no me dejen en el olvido.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #5 (permalink)  
Antiguo 01/07/2005, 09:29
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 12 años, 10 meses
Puntos: 1
De acuerdo

Pues si a ti te sirve pues esta bien o no??, lo de dividir /3 el tamaño de las imagenes esta muy bien si todas las imagenes son del mismo tamaño pero si tienes imagenes 320*240 y 1280 * 1024 pues se verian muy desproporcionadas, desde ese punto de vista pues es mejor que todas las imagenes tengan un alto o ancho fijo asi puedes meter tablas y no te desproporcionan ni los renglones ni las columnas de tus tablas, y tal vez usar cargar las imagenes de un directorio sea un poco inseguro, la verdad yo no lo se, apenas ando aprendiendo, tal vez alguien mas experimentado te pueda decir si ventajas y desventajas.
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #6 (permalink)  
Antiguo 01/07/2005, 09:57
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Tyo100: es verdad lo que dices. En mi caso ya había retocado todas las imágenes y todas tienen el mismo ancho y alto. Por eso opté por /3.
Lo que no entiendo es a que viene el tema de inseguridad al cargar las imágenes de un directorio, la verdad no entendí.
Lo único que me falta es saber como mostrar una cierta cantidad de imágenes que tengo en un directorio, pero no paginadas.
Por ahí no soy muy claro, pero supuse que si agarro 10 fotos y les pongo como nombre nga001.jpg, nga002, etc, para un grupo... ngb001, ngb002.jpg para otro grupo, por ahi podría crear un link para cada uno de esos grupos y al presionar que me traiga solo las que tengan como nombre nga y me las muestre, o ngb y me las muestre.
No sé si estaré encaminado, pero ahora estoy probando la funcion substr() con textos y va bien. Voy a ver si se puede hacer con archivos.

Gracias =mente por tu ayuda y tiempo.

Un saludo cordial.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 04/07/2005, 07:53
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Gente... no le encuentro la vuelta... ¿se puede hacer de esta forma o mejor me manejo con base de datos?

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
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 01:52.