Foros del Web » Programando para Internet » PHP »

Thumbnails desde Function

Estas en el tema de Thumbnails desde Function en el foro de PHP en Foros del Web. Hola: Tengo un problema porque no se como llamar una cosa desde otra. Tengo mi fichero thumbnails.php cuyo código es este: Código PHP: <?   $img  ...
  #1 (permalink)  
Antiguo 07/09/2004, 16:06
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Thumbnails desde Function

Hola:
Tengo un problema porque no se como llamar una cosa desde otra. Tengo mi fichero thumbnails.php cuyo código es este:
Código PHP:
<?
  $img 
$_GET['img'];
  
$image imagecreatefromjpeg($img);
  
$img_w imagesx($image);
  
$img_h imagesy($image);
  
$new_img_w 168;
  
$new_img_h 126;
  
$new_img_source imagecreate($new_img_w,$new_img_h);
  
imagecopyresized($new_img_source$image0000$new_img_w$new_img_h,$img_w$img_h);
  
header("Content-type: image/jpeg");
  
imagejpeg($new_img_source,"");
?>
y entonces en otro lado tengo esto otro:
Código PHP:
function WallPapers($categoria,$pagina,$col 4$columnas 4$filas 4){
  
session_start();
  
$sid "&jcgrmsid=".session_id();
  if(
$categoria == "todas"){
   
$query       "SELECT * FROM jcgrm_categorias_tapices WHERE activa<>0 ORDER BY idcat";
   
$result      mysql_query($query) or die(mysql_error());
   echo 
"<table border='0' align='center' cellpadding='0' cellspacing='1' class='table'>";
   echo 
"<tr>";
   echo 
"<td class='topics bold font padding tr' colspan=".$col.">Fondos de Escritorio</td>";
   echo 
"</tr>";
   if(
mysql_num_rows($result) != 0){
    
$row mysql_fetch_array($result);
    while(
$row){
     echo 
"<tr>";
     
$int 0;
     do {
      echo 
"<td><a href='tapices.php?accion=mostrar&categoria=".$row['idcat']."".$sid."'><img src='images/tapices/cat/".$row['imagen']."' alt='".$row['titulo']."' border='0'></a></td>";
      
$int++;
     } while((
$row mysql_fetch_array($result)) && ($int $col));
     echo 
"</tr>";
    }
   }else{
    echo 
"<tr><td class='padding font bold'>No poseemos ninguna categoría activa</td></tr>";
   }
   echo 
"</table>";
  }else{
   
$query       "SELECT * FROM jcgrm_tapices WHERE (idcat=".$categoria.") AND (activa<>0) LIMIT ".($pagina*$filas*$columnas).",".($filas*$columnas)."";
   
$result      mysql_query($query) or die(mysql_error());
   
$titquery    "SELECT * FROM jcgrm_categorias_tapices WHERE idcat=".$categoria."";
   
$titresult   mysql_query($titquery) or die(mysql_error());
   
$rowtit      mysql_fetch_assoc($titresult);
   echo 
"<table border='0' class='table' align='center' cellpadding='1' cellspacing='0'>";
   echo 
"<tr>";
   echo 
"<td colspan=".$columnas." class='topics bold tr padding font'><a href='tapices.php?accion=mostrar&categoria=todas".$sid."'>Fondos de Escritorio</a> :: <a href='tapices.php?accion=mostrar&categoria=".$categoria."".$sid."'>".$rowtit['titulo']."</a><td>";
   echo 
"</tr>";
   if(
mysql_num_rows($result) != 0){
    
$cant        "SELECT COUNT(*) AS cantidad FROM jcgrm_tapices WHERE (idcat=".$categoria.") AND (activa<>0)";
    
$cantres     mysql_query($cant) or die(mysql_error());
    
$res         mysql_fetch_array($cantres);
    
$row mysql_fetch_array($result);
    while(
$row){
     echo 
"<tr>";
     
$int 0;
     do {
      echo 
"<td><img src='thumbnails.php?img=images/tapices/".$row['imagen']."'></td>"// aqui quiero que me salgan thumbnails de imagenes grandes que están en ese directorio,  como lo hago?
      
$int++;
     } while((
$row mysql_fetch_array($result)) && ($int $columnas));
     echo 
"</tr>";
    }
    echo 
"<tr><td colspan=".$columnas."><table border='0' width='100%'><tr>";
    if(
$pagina){
     echo 
"<td align='center'><a href='tapices.php?accion=mostrar&categoria=".$categoria."&pagina=".($pagina-1)."".$sid."'>< Anterior</a></td>";
    }
    if(((
$pagina+1)*$filas*$columnas) < $res['cantidad']){
     echo 
"<td align='center'><a href='tapices.php?accion=mostrar&categoria=".$categoria."&pagina=".($pagina+1)."".$sid."'>Siguiente ></a></td>";
    }
    echo 
"</tr></table></td></tr>";
   }else{
    echo 
"<tr><td class='padding font bold'>No poseemos tapices en esta categoría</td></tr>";
   }
   echo 
"</table>";
  }
 } 
y entonces en la linea comentareada miren lo que quiero hacer. A ver si alguien lo ha hecho ya y me ayuda.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 08/09/2004, 10:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según tu código .. el que hace el thumbnail actualmente lo hace a partir de una ruta/imagen dada ...

Ahora: ¿quieres pasar como ruta un directorio y que haga los thumbnails de ese directorio? ..

Si es así, tendrás que primero leer las imagenes de ese directorio (archivos) con funciones como opendir() y afines filtrando por extensión o formato MIME los archivos (y entradas de directorio) que puedas leer y obtener para quedarte con las imagenes para luego recorrer el array que te va a arrojar con esos nombres de archivos y mandar a llamar a tu actual códig y técnica que usas para generar el Thumbnail.

más info:
www.php.net/openbasedir

Un saludo,
  #3 (permalink)  
Antiguo 09/09/2004, 07:45
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Cluster ::

Me podrías poner un ejemplo de como hacer esto a ver si lo adapto a mi código pues estuve estudiando un poco y entendí pero no me organizo para hacer las cosas bien.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 09/09/2004, 07:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
He tratado de esta forma pero nada

Mira he hecho esto pero nada de nada:
Código PHP:
.....
if(
mysql_num_rows($result) != 0){
    
$cant        "SELECT COUNT(*) AS cantidad FROM jcgrm_tapices WHERE (idcat=".$categoria.") AND (activa<>0)";
    
$cantres     mysql_query($cant) or die(mysql_error());
    
$res         mysql_fetch_array($cantres);
    
$row mysql_fetch_array($result);
    while(
$row){
     echo 
"<tr>";
     
$int 0;
     do {
      
// Creamos los thumbnails
      
$image imagecreatefromjpeg("images/tapices/".$row['imagen']."");
      
$img_w imagesx($image);
      
$img_h imagesy($image);
      
$new_img_w 168;
      
$new_img_h 126;
      
$new_img_source imagecreate($new_img_w,$new_img_h);
      
imagecopyresized($new_img_source$image0000$new_img_w$new_img_h,$img_w$img_h);
      
header("Content-type: image/jpeg");
      
$imagen imagejpeg($new_img_source,"");

      echo 
"<td><img src='".$imagen."'></td>";
      
$int++;
     } while((
$row mysql_fetch_array($result)) && ($int $columnas));
     echo 
"</tr>";
     ...... 
Salu2

PD: No está todo el código solo un pedazo del mismo
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 09/09/2004, 08:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. en el código que pusistes no se vé nada ni donde le pasas la ruta de tu directorio (usando openbasedir() )

¿donde sacas la ruta del directorio a listar archivos?. Por lo demás .. en tu Base de datos ya guardas "nombres de archivos" (imagenes) .. así que.. que tiene que ver todo eso en este caso particular de ver las imagenes (en thumbnails) de un cierto directorio?..

Explica mejor la situación (antes de poner más código -fuera de contexto-) por qué sino .. no nos aclararemos.

Un saludo,
  #6 (permalink)  
Antiguo 09/09/2004, 19:29
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Mira

Cluster:
Le he vuelto a pasar por arriba a todas las funciones de trabajo con fichero y directorio, pero lo que no acabo de entender es porque no puedo hacer esto:
Código PHP:
<img src='thumbnails.php?img=images/tapices/imagen01.jpg'
me lo podrías explicar un poco a ver si entiendo. He pensado poner todas las imagenes del directorio en un arreglo y comprobar si esa existe pero todavía no se que ventaja me podría traer esto y porque debo hacerlo.

Salu2 y disculpa que joda tanto pero es que me gusta estudiar para aprender.
__________________
Ing. Reynier Pérez Mira
  #7 (permalink)  
Antiguo 10/09/2004, 08:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. a ver ..

Donde gestionas o quieres gestionar los nombres de tus archivos?
- Obtenidos de tu BD
- Que se lea un directorio (incluso con subdirectorios) y ahí se tomen los nombres de los archivos (filtrado tal vez por tipo) del directorio indicado?

Aclara eso primero .. por qué tu ejemplo:
<img src='thumbnails.php?img=images/tapices/imagen01.jpg'>

primero pasa por "obtener" ese nombre de esa imagen (archivo): imagen01.jpg .. Cosa que si lees un directorio .. el hecho de leerlo ya te va a entregar un array con los nombres de los archivos (y entradas de directorio) que pueda contener una ruta dada como "images/tapices" para que al leer ese array (vía bucle) genéres dinámicamente esos tag de imagen hacia tus script que genere el thumbnail.

Un saludo,
  #8 (permalink)  
Antiguo 10/09/2004, 09:54
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
A ver

Deja explicarme bien para que me entiendas. Mira el nombre de las imágenes lo obtengo a través de BDatos, pero solo el nombre. Que ventaja tiene esto, que si por ejemplo renombro el directorio donde están las imagenes solo debo ir al código y cambiar la ruta mientras que si lo que tuviera en la BDatos fuera la ruta más la imagen entonces tendría que cambiar todos los campos de la tabla donde almaceno la información. Entonces lo que quiero es saber como crear los thumbnails a partir de esto. Mira este es el código que se encarga de gestionarme eso:
Código PHP:
 while($row mysql_fetch_assoc($resultado)){
  echo 
"<img src='images/tapices/".$row['imagen']."'>"
  
// aqui si renombro el directorio entonces sería cambiar la ruta en el código 
  // de lo contrario si en la BDatos tuviera la ruta así 
  // en el campo imagen tuviera esto images/tapices/imagen.jpg
  // tendría que cambiar todas las rutas en la BDatos y sería algo engorroso
  // en caso de que tuviese 2000 imágenes
 

Espero que ahora me hayas entendido
Salu2
__________________
Ing. Reynier Pérez Mira
  #9 (permalink)  
Antiguo 10/09/2004, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tu "función" que crea los thumbnails lo hace en tiempo real (no crea archivos) .. así que tan sólo debes pasarle la ruta de tu archivo o bien la defines como "constante" en algún archivo de configuración:

echo "<img src='images/tapices/".$row['imagen']."'>";
echo "<img src='thumbnails.php?img=".$row['imagen']."'> ";

Eso sí .. tu "thumbnails.php" sólo debe contener el código neceario para hacer tu consulta SQL a tu BD y el "header()" que genera la cabecera HTTP necearia para informar al cliente que ese dato que se va a enviar es una imagen de tal format MIME

thumbnails.php?imagen=nose.jpg
Código PHP:
<?

// Creamos los thumbnails 
      
$image imagecreatefromjpeg("images/tapices/".$_GET['imagen'].""); 
      
$img_w imagesx($image); 
      
$img_h imagesy($image); 
      
$new_img_w 168
      
$new_img_h 126
      
$new_img_source imagecreate($new_img_w,$new_img_h); 
      
imagecopyresized($new_img_source$image0000$new_img_w$new_img_h,$img_w$img_h); 
      
header("Content-type: image/jpeg"); 
      
imagejpeg($new_img_source,""); 
?>
Ese código debe estar en un script sólo. No se puede mezclar con más "salida" como ese HTML o resto de salida que en un principio intentabas usar.

Un saludo,
  #10 (permalink)  
Antiguo 10/09/2004, 10:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
sigo en las mismas

Mira he hecho lo que me dijiste y no me crea nada. Cuando le das click derecho sobre el famoso cuadrado con la "X" me da esto:
o sea la ruta. Entonces el código del archivo thumbnails.php es el siguiente:
Código PHP:
<?
  $image 
imagecreatefromjpeg("images/tapices/".$_GET['imagen']."");
  
$img_w imagesx($image);
  
$img_h imagesy($image);
  
$new_img_w 168;
  
$new_img_h 126;
  
$new_img_source imagecreate($new_img_w,$new_img_h);
  
imagecopyresized($new_img_source$image0000$new_img_w$new_img_h,$img_w$img_h);
  
header("Content-type: image/jpeg");
  
imagejpeg($new_img_source,"");
?>
y donde cojo la imagen es esto:
Código PHP:
echo "<td><img src='thumbnails.php?imagen=".$row['imagen']."' border='0' class='cursor''></td>"
que hago mal ahora?

Salu2
__________________
Ing. Reynier Pérez Mira
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:47.