Libro de Visitas Gratis
Inicio | Directorio de Páginas | Diseño Gráfico | Gadgets | Posicionamiento | Webmasters| Buscador de Artículos | Glosarios

Thumbnails de Imagenes

Añade Tu Web Al Directorio de NocionDigital.com
Enseñare como crear thumbnails de imagenes, Para los que no estan familiarizados con el termino esto se refiere a previsualizaciones de menor tamaño de una imagen original, lo cual se utiliza mucho para galerias de imagenes, al mostrar al usuario una copia de la imagen original pero de menor tamaño tanto en pixeles como en bytes.

Para el ejemplo utilizare una como formato de imagen el GIF, Primero presentare el codigo y luego la explicacion linea por linea al igual que como hacerlo con diferentes formatos de imagen.

Supongo que el nombre del archivo es imagen.php

//Una Creacion De Jorge Luis Martinez M
//http://misCodigos.jlmnetwork.com/
/*Este Archivo Recibe Los Parametros $ruta, Que Es La Ruta Interna De La Imagen En El Servidor, Y Los Parametros $ancho y $alto Que Se Refiere Al Alto Y Ancho De La Previsualizacion.*/
$fuente = @imagecreatefromgif($ruta);
$imgAncho = imagesx ($fuente);
$imgAlto =imagesy($fuente);
$imagen = ImageCreate($ancho,$alto);
ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);

Header("Content-type: image/gif");
imageGif($imagen);
?>



Nota: La explicacion la hago suponiendo un conocimiento basico de php por parte del lector.

Lo primero es recordar que este archivo recibe los parametros $ruta que es la ruta interna de la imagen en el servidor, entonces si el fichero imagen.php se encuentra en:
http://www.servidor.com/cuenta/imagen.php

Y la imagen, en este caso supondremos el nombre "01.gif", se encuentra en:
http://www.servidor.com/cuenta/galeria/01.gif

A imagen.php Solo Le Pasaremos galeria/01.gif como valor de ruta:
http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif

Pero esto no es todo, recordemos que recibe otros dos parametros, los cuales son alto y ancho, Estos no se refieren al alto y ancho de la imagen original, se refieren al alto y ancho que queremos la previsualizacion(Thumbnail), entonces si queremos que nos devuelva la imagen 01.gif, ubicada en el directorio galeria y cuyo tamaño original es de 400 pixeles de anchura y 300 pixeles de altura pero queremos la previsualizacion de 200
pixeles de anchura y 150 pixeles de altura tendriamos que llamarla de esta manera:
http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif&ancho=200&alto=150


Nota: Obviamente si lo llamamos para presentarlo como imagen dentro de un archivo al usuario(.html, .php, etc), lo llamamos mediante el tag IMG.

Ahora que ya sabemos como llamar a la imagen, vamos a ver como se hace la previsualizacion(Thumbnail), como es que se crea desde una imagen mas grande una imagen mas pequeña tanto en pixeles como en tamaño
para su presentacion al usuario.
Primero creamos una copia de la imagen desde archivo, la igualamos a $fuente, ya que alli quedara un identificador de tipo ENTERO(INT) para dirijirnos a la imagen creada, esto es necesario ya que sera de esta imagen que haremos la Previsualizacion(Thumbnail).

$fuente = @imagecreatefromgif($ruta);

Nota: Recuerde que el @imagecreatefromgif() es para imagenes gif, si quiere crear jpeg o png solamente cambie el gif: @imagecreatefromjpeg($ruta) ó @imagecreatefrompng($ruta)

Ahora obtendremos la anchura y altura de la imagen original, esto es necesario para poder hacer la copia de la imagen, para ello utilizamos las funciones imageSX y imageSY, que reciben como parametro un identificador de imagen(en este caso $fuente, que es el identificador de la imagen original) y devuelven la anchura y altura de la imagen respectivamente.
$imgAncho = imagesx ($fuente);
$imgAlto =imagesy($fuente);

Ahora creamos una imagen nueva en blanco con la anchura y altura que queremos para la previsualizacion(Thumbnail) y que sera la que se le devuelva al usuario cuando se le llame, ya sea directamente en el browser o por medio de la etiqueta IMG de html.

$imagen = ImageCreate($ancho,$alto);

Ahora lo mas importante, copiaremos la imagen original a la imagen nueva, lo cual hara que al tener un menor tamaño(la imagen nueva), la copia de que hacemos de la original se ajustara al tamaño de esta.
Utilizamos la funcion ImageCopyResized() la cual sirve para copiar "partes" de una imagen a otra por medio de coordenadas, pero en nuestro caso no necesitamos un pedazo, necesitamos copiar toda la imagen en todo el espacio de la nueva imagen, por ello damos las coordenadas totales de las imagenes.

Esto puede sonar un poco confuso, por eso es mejor que mira la documentacion oficial en http://www.php.net/ para informacion sobre los parametros que recibe esta funcion.

ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);

Listo, ya tenemos nuestra imagen, ahora debemos indicarle al navegador que vamos a devolver una imagen de tipo gif, para ello enviamos la cabecera diciendo el tipo de contenido que enviaremos al navegador.

Header("Content-type: image/gif");

Nota: Recuerde, si el formato es jpeg o png solamente cambie el gif: image/jpeg ó image/png
Ahora devolvemos la imagen directamente al browser(navegador) del usuario. imageGif($imagen);

Nota: Recuerde, si el formato es jpeg o png solamente cambie el gif: imageJpeg($imagen) o imagePng($imagen)

Bien espero haya quedado claro, pero vamos a ver otro aspecto, que tal si no queriamos devolver la imagen, lo que queriamos era guardar la nueva imagen(Thumbnail) en el servidor, para su uso posterior?... Al ponerle un segundo parametro al imageGif($imagen,"imagenPequena.gif"), Lo lograremos, en este caso guardaria la imagen que acabamos de crear en el servidor, especificamente en la misma carpeta con el nombre de "imagenPequena.gif".

Esto puede ser muy util, ya que si queremos crear thumbnails de todas las imagenes en un directorio, podemos hacer un loop que lea los archivos del directorio, y repita el proceso anterior(de crear imagen en blanco y copiar) y guarde las nuevas imagenes para su uso posterior, realmente es una herramienta con muchos usos.

Nota: Cabe recordar que su servidor tiene que tener soporte para manipular imagenes, segun el tipo que desee utilizar, en caso de no tenerlo el servidor le dara un mensaje de error como "Jpeg is no support..." dependiendo del formato de imagen. 
 
Hits
DOCUMENTOS RELACIONDOS
1126
Links ordenados en menus emergentes.
810
FOR.
3674
Columnas de texto en un documento.
895
Variables variables.
5874
Crear un formulario dinámicamente a partir de los campos de una tabla.
1426
Enviar un e-mail via formulario.
4107
Crear ejecutables en PHP.
3349
Mostrar la fecha en formato "27 de Marzo del 2005".
1197
Otros efectos en el texto.
1375
Efecto de Flash en la barra de estado.
1686
POP-Up con un formato configurable.
1755
Login de 3 intentos.
1463
Función para crear archivos.
1716
Clase para crear y modificar un archivo Excel desde PHP.
4391
Efecto de Zoom en una imágen.
1353
Listas y menús.
1463
Todo sobre cookies.
1171
Simple recorrido por un vector (array).
3476
Ordenar una matriz (QuickSort).
1820
Random de letras.


www.nociondigital.com - Todo para un mundo digital. Páginas Webs, Buscadores y Webmasters....