Foros del Web » Programando para Internet » PHP »

más duda con galeria de imágenes

Estas en el tema de más duda con galeria de imágenes en el foro de PHP en Foros del Web. muy buenas a todos otra vez. os cuento. tengo una base de datos llamada fotografias con tres campos: 'idfoto' que es autonumerico, 'nombre' que es ...
  #1 (permalink)  
Antiguo 24/10/2006, 11:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 91
Antigüedad: 17 años, 8 meses
Puntos: 0
más duda con galeria de imágenes

muy buenas a todos otra vez. os cuento. tengo una base de datos llamada fotografias con tres campos: 'idfoto' que es autonumerico, 'nombre' que es varchar (255) y recoge un nombre de la foto y 'foto' que también es varchar (255) y recoge la ruta donde se guarda la foto que subo (normalmente fotos/nombre.jpg, pues las fotos se guardan en un directorio llamado 'fotos')

bien. resulta que después muestro las fotos en una tabla mediante una consulta, de tal modo que la tabla me muestra por página cuatro fotos distribuídas en dos columnas de dos filas con dos imágenes cada una. después de mucho probar, con la única forma que he podido conseguir eso es la siguiente:

///////////////
<table align="center"><tr><td class="text2">Haga click en la imagen para agrandar<BR><BR>
<?php
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("basededatos", $link);
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$result = mysql_query("SELECT COUNT(*) FROM galeria", $link);
list($total) = mysql_fetch_row($result);
$tampag = 4;//número de resultados por página
$reg1 = ($pag-1) * $tampag;
$result = mysql_query("SELECT * FROM fotografias ORDER BY idfoto DESC LIMIT $reg1, $tampag", $link);

if (mysql_num_rows($result)){

$i = 1;
while ($row = @mysql_fetch_array($result)) {

if($i==2){//número de columnas por pagina
$align = "";
$i = 0;
}
else{
$align = "align='left'";
}

echo "<table $align border=1 bordercolor=#684522><tr><td class=text2 bgcolor=#FFFFCC ALIGN=center>".$row["nombre"]."<BR>
<a href=javascript:popup('popup.php?id=$row[idfoto]');><img alt=".$row["nombre"]." src=".$row[foto]." width=150 height=80 border=0></a></td></tr></table>";
$i++;
}

}
else
echo "<span class=text2>No hay novedades publicadas actualmente</span>";

/************************************************** ****/
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a class=textenlace1 href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto = "<b>&laquo;</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a class=textenlace1 href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a class=textenlace1 href=\"$enlace$i\">$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a class=textenlace1 href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return $texto;
}
?> </td></tr></table><DIV ALIGN="center">

<?php
echo paginar($pag, $total, $tampag, "novedades.php?pag="); ?></DIV>
///////////
bien como podeis ver tiene también para paginar.
el tema está en que quiero mostrar las fotografías en pequeño y en proporción a su tamaño original. actualmente obligo al navegador a mostrarlas a un tamaño 150x80 en pequeño. esto tiene el contratiempo de que cuando la imagen a mostrar es más alta que ancha, se desvirtua. cómo puedo hacer que aparezca en proporción? lo he probado todo lo que tenéis en el foro pero nada, no me va (o no sé o no soy capaz de adaptarlo a mis necesidades) por favor, un ayudita...
  #2 (permalink)  
Antiguo 24/10/2006, 16:12
 
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 20 años, 8 meses
Puntos: 0
Prueba con esto:
Primero crea un archivo llamado redimensionar.php como te indico aqui, $dir es el directorio dente se encuentra la imagenes

redimensionar.php
Código HTML:
$dir = "./images/int/";
$vNombre = $dir.$_GET['imagen'];
$anchura=70; 
$hmax=70; 
$nombre=$vNombre; 
$datos = getimagesize($nombre); 
if($datos[2]==1){$img = @imagecreatefromgif($nombre);} 
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);} 
if($datos[2]==3){$img = @imagecreatefrompng($nombre);} 
$ratio = ($datos[0] / $anchura); 
$altura = ($datos[1] / $ratio); 
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;} 
$thumb = imagecreatetruecolor($anchura,$altura); 
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]); 
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);} 
if($datos[2]==2){header("Content-type: image/pjpeg");imagejpeg($thumb);} 
if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); } 
imagedestroy($thumb);
Luego donde quiere que te aparezca la imagen coloca lo siguiente:

<img src='redimensionar.php?imagen=<?=$file?> border='0'>

donde $file es el nombre de la imagen...

Espero que te ayude...
__________________
AdsParaTuWeb.com
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 03:45.