Resulta que funciona, pero las vistas previas en miniatura no se ven... es decir, cargan los cuadritos con icono roto, aunque al dar click en ellos, se abre la imagen correctamente.
He revisado, y parece estar todo bien, pero tengo nada de experiencia en clases de php.
Comparto el código por si algún experto puede encontrar la falla.
Código de Galeria.php
Código PHP:
Ver original
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP Gallery Example</title> <link href="css/jquery.lightbox-0.5.css" rel="stylesheet" type="text/css" /> <script src="scripts/jquery-1.3.2.js" language="javascript"></script> <script src="scripts/jquery.lightbox-0.5.js" language="javascript"></script> </head> <body> <div align="center"> <?php include_once('gallery.php'); $mygallery = new gallery(); $mygallery->loadFolder('galley_images'); $mygallery->show(500, 100, 10); ?> </div> </body> </html>
Código de gallery.php donde se llama a show_thumb.php que es el que no carga los cuadritos :/
Código PHP:
Ver original
<?php class gallery { var $path; function loadFolder($path){ $this->path = $path; //---Guardar en un arreglo todos los archivos en el directorio //---Si no es un directorio //---Ir guardando los nombres en un arreglo $this->files[] = $fil; } } } //---Cerrar el directorio //---Ordenar alfabeticamente el arreglo } function show($area = 500, $width = 100, $space = 10){ //---Crear la galería con los nombres de todos los archivos $cont = 0; echo '<div name="xx" style="width:'.$area.'px">'; //---Situar los thumbnails for($i = 0; $i < $total; $i++){ echo '<div style="width:'.$width.'px; float:left; padding-right:'.$space.'px; padding-bottom:'.$space.'px;"><a href="'.$this->path.'/'.$this->files[$i].'" rel="lightbox"><img src="show_thumb.php?src='.$this->path.'/'.$this->files[$i].'&width='.$width.'" width="'.$width.'" height="'.$width.'" border="0"></img></a></div>'; } ?> <script language="javascript"> $(document).ready(function(){ $("a[rel = 'lightbox']").lightBox(); }); </script> <?php echo '</div>'; } } ?>
Código de thumb.php donde se maneja la imagen para redimensionarla.
Código PHP:
Ver original
<?php class thumb { var $image; var $type; var $width; var $height; //---Método de leer la imagen function loadImage($name) { //---Tomar las dimensiones de la imagen $this->width = $info[0]; $this->height = $info[1]; $this->type = $info[2]; //---Dependiendo del tipo de imagen crear una nueva imagen switch($this->type){ case IMAGETYPE_JPEG: break; case IMAGETYPE_GIF: break; case IMAGETYPE_PNG: break; } } //---Método de guardar la imagen function save($name, $quality = 100) { //---Guardar la imagen en el tipo de archivo correcto switch($this->type){ case IMAGETYPE_JPEG: break; case IMAGETYPE_GIF: break; case IMAGETYPE_PNG: break; } } //---Método de mostrar la imagen sin salvarla function show() { //---Mostrar la imagen dependiendo del tipo de archivo switch($this->type){ case IMAGETYPE_JPEG: break; case IMAGETYPE_GIF: break; case IMAGETYPE_PNG: break; } } //---Método de redimensionar la imagen sin deformarla function resize($name, $value, $prop){ //---Determinar la propiedad a redimensionar y la propiedad opuesta $prop_value = ($prop == 'width') ? $this->width : $this->height; $prop_versus = ($prop == 'height') ? $this->height : $this->width; //---Determinar el valor opuesto a la propiedad a redimensionar $pcent = $value / $prop_value; $value_versus = $prop_versus * $pcent; //---Crear la imagen dependiendo de la propiedad a variar $image = ($prop == 'width') ? imagecreatetruecolor($value, $value_versus) : imagecreatetruecolor($value_versus, $value); //---Hacer una copia de la imagen dependiendo de la propiedad a variar switch($prop){ case 'width': imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value, $value_versus, $this->width, $this->height); break; case 'height': imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value_versus, $value, $this->width, $this->height); break; } //---Actualizar la imagen y sus dimensiones $this->image = $image; } //---Método de extraer una sección de la imagen sin deformarla function crop($name, $cwidth, $cheight, $pos = 'center') { //---Hallar los valores a redimensionar $new_w = $cwidth; $new_h = ($cwidth / $this->width) * $this->height; //---Si la altura es menor recalcular por la altura if($new_h < $cheight){ $new_h = $cheight; $new_w = ($cheight / $this->height) * $this->width; } $this->resize($new_w, 'width'); //---Crear la imagen tomando la porción del centro de la imagen redimensionada con las dimensiones deseadas switch($pos){ case 'center': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'left': imagecopyresampled($image, $this->image, 0, 0, 0, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'right': imagecopyresampled($image, $this->image, 0, 0, $this->width - $cwidth, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'top': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), 0, $cwidth, $cheight, $cwidth, $cheight); break; case 'bottom': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), $this->height - $cheight, $cwidth, $cheight, $cwidth, $cheight); break; } $this->image = $image; } } ?>
Y código de show_thumb.php que es la que debería mostrar las miniaturas bien.
Código PHP:
Ver original
<?php $src = $_GET['src']; $width = $_GET['width']; include_once('thumb.php'); $image = new thumb(); $image->loadImage($src); $image->crop($src, $width, $width); $image->show(); ?>
Gracias por su tiempo, espero alguien pueda darme respuestas :(