InicioAyudaBuscarIngresarRegistrarse

Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación?
08 de Enero de 2009, 11:02:34 pm

Ingresar con nombre de usuario, contraseña y duración de la sesión
Mexhardware
Buscar

Stats
7507 Mensajes en 1768 Temas por 591 Usuarios
Último usuario: salesdirect
Foro MexHardware  |  Software  |  Programación  |  Tema: Imágenes miniatura instantáneas en PHP - Nivel INTERMEDIO « anterior próximo »
Páginas: [1] Imprimir
Tema: Imágenes miniatura instantáneas en PHP - Nivel INTERMEDIO  (Leído 845 veces)
arathael
Geek
*
Desconectado Desconectado

Mensajes: 51



Ver Perfil WWW
« en: 07 de Abril de 2007, 05:58:03 pm »

Jelou Bandera.. ya ando encarrerado.

Para todos aquellos que necesitan hacer una pequeña galería con imágenes miniatura, también conocidas como thumbnails y andan en los rumbos de PHP, aquí les tengo una buena forma de hacerlo.

Ciertas ocasiones nuestras imágenes pesan alrededor de unos 3 o 4 megas (benditos megapixeles), y no podemos ponerlas en nuestras páginas así tal cual porque tardarían siglos en cargarse en dial-up (ojo los que escriben los reviews aquí). Aparte hay que tomar en cuenta de que una imagen de 1200 x 800 pixeles al mostrarla en una página web con un tamaño forzado de 200 px se distorsiona y pierde calidad, haciendo que nuestra página se vea poco profesional. Paren oreja..

¿Que necesito?
Únicamente la librería GD 2 corriendo con PHP, puedes usar el phpinfo() para saber que versión tienes. Por lo general esto ya lo ofrecen todos los webhosts. Si resulta que TU eres el administrador de tu servidor puedes abrir el php.ini y checar que la linea de la liberia gd esté descomentada. ReApachea y listo.

Ah, saber algo de PHP también es útil...

¿Como le hago?

Supongamos que tenemos una imagen de 1800 pixeles de ancho y queremos una miniatura de 150 px, le podemos hacer de 2 formas:

  • Hacer que un script genere un archivo de imágen miniatura y lo almacene en un directorio especial para las miniaturas con algún prefijo 'th_' o 'mini_'. Lo cual nos ocupa espacio en disco por cada imagen que tengamos, y nos restringe el tamaño de la miniatura a uno fijo. Osea, que si yo quiero una miniatura de 150px y otra de 300px ya son 4 archivos en total (contando el original). No voy a profundizar más en este tipo de script.
  • Hacer que un script genere una imágen con un parámetro dado para localizar el archivo de imágen, y otro parámetro que indique el tamaño que quieres generar y la devuelva en formato MIME image/jpeg o algún otro formato listo para utilizarse en tags HTML <img>. En otras palabras, crearla "al vuelo".

mini.php :
Código:
<?php
// Esto es importante ya que se trata de una imagen, y no un archivo HTML.
header("Content-type: image/jpeg");

/* Aquí llamamos al parámetro 'img' del querystring para que nos indique cual es la imágen que vamos a redimensionar. Lo hago desde un JPG, para hacerlo desde otro archivo, GD ofrece otras funciones: imagecreatefromgif() e imagecreatefrompng() */
$srcimage imagecreatefromjpeg($_GET['img']);

// Obtengamos el tamaño de la imagen original
$width imagesx($srcimage);
$height imagesy($srcimage);

/* El nuevo ancho será el que nos especifique el parámetro 'tamano'. Y el alto sera proporcional al nuevo tamaño. */
$t_width $_GET['tamano'];
$proporcion $t_width $width;

$t_height $proporcion $height;

// Entonces es cuando creamos una imagen nueva con los nuevos tamaños.
$destimage imagecreatetruecolor($t_width,$t_height);

// Copiamos el contenido de la imagen original, a la nueva imagen y con las nuevas dimensiones.
imagecopyresampled($destimage,$srcimage,0,0,0,0,$t_width,$t_height,$width,$height);

// Generamos la imagen y la presentamos al output.
imagejpeg($destimage);

// Limpiemos el buffer
imagedestroy($destimage);
?>

Entonces, desde cualquier archivo html podremos llamar al tag <img/> con la siguiente sintaxis:
Código:
<img src="imgs/mini.php?img=foto1.jpg&amp;tamano=200" />

Listo, todo por ahora... Nos vemos banda..

Documentación de la librería GD en el sitio de PHP: http://www.php.net/gd
En línea

Páginas: [1] Imprimir 
Foro MexHardware  |  Software  |  Programación  |  Tema: Imágenes miniatura instantáneas en PHP - Nivel INTERMEDIO « anterior próximo »
Ir a:  

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
Amber design by Bloc | XHTML | CSS