Generar Thumbnails PHP
Publicado: 26 de Set del 2007Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com
Script para crear imágenes en miniatura con la librería GD.
Generar Imágenes en Miniatura
En este tutorial trataremos de explicar cómo crear previsualizaciones de imágenes (thumbnails) de un directorio y luego guardarlas en otro con PHP.
Es necesario tener instalada la Librería GD en PHP para poder tratar y redimensionar las imágenes.
Código por Partes
Al final del artículo hemos escrito el código completo. Pero antes veamos por partes que hace el programa.
Primero definiremos algunas variables. El ancho que tendrá la imagen de previsualización, el directorio que contiene las imágenes, las extensiones de imágenes que convertiremos y el directorio donde queremos guardar las previsualizaciones.
$ancho_preview = 50;
$directorio = "./imagenes/";
$extensiones = array("gif","jpg","png");
$directorioGuardar = "./previews/";
A continuación haremos algunas comprobaciones básicas para verificar que el directorio existe y que se puede abrir.
...
if(is_dir($directorio) && $dir = opendir($directorio)){
Si todo es correcto entraremos dentro del bucle para leer los archivos que contiene. Para cada archivo miraremos su extensión.
...
while (($nombre_archivo = readdir($dir)) !== false){
$archivo = pathinfo($directorio.$nombre_archivo);
if (in_array(strtolower($archivo['extension']),$extensiones))
{
if(strtolower($archivo['extension'])=="gif"){
$img = imagecreatefromgif($directorio.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
$img = imagecreatefromjpeg($directorio.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
$img = imagecreatefrompng($directorio.$nombre_archivo);
}
...
Finalmente haremos una copia de la imagen original usando la función imagecopyresized*** con las nuevas dimensiones, y luego guardaremos el archivo de imagen en la carpeta adecuada.
Script Completo
$ancho_preview = 50;
$directorio = "./imagenes/";
$extensiones = array("gif","jpg","png");
$directorioGuardar = "./previews/";
if(is_dir($directorio) && $dir = opendir($directorio)){
while (($nombre_archivo = readdir($dir)) !== false){
$archivo = pathinfo($directorio.$nombre_archivo);
if (in_array(strtolower($archivo['extension']),$extensiones))
{
if(strtolower($archivo['extension'])=="gif"){
$img = imagecreatefromgif($directorio.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
$img = imagecreatefromjpeg($directorio.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
$img = imagecreatefrompng($directorio.$nombre_archivo);
}
$ancho = imagesx($img);
$altura = imagesy($img);
$ancho_nuevo = $ancho_preview;
$nueva_altura = floor($altura*($ancho_preview/$ancho));
$tmp_img = imagecreatetruecolor($ancho_nuevo,$nueva_altura);
imagecopyresized($tmp_img,$img,0,0,0,0,$ancho_nuevo,$nueva_altura,$ancho,$altura);
if(strtolower($archivo['extension'])=="gif"){
imagegif( $tmp_img,$directorioGuardar.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="jpg"){
imagejpeg( $tmp_img,$directorioGuardar.$nombre_archivo);
}else if(strtolower($archivo['extension'])=="png"){
imagepng( $tmp_img,$directorioGuardar.$nombre_archivo);
}
}
}
}
closedir($dir);
Comentarios
Artículos relacionadosVer más
- Calcular el tiempo exacto entre dos fechas
- Clase para conectar php con mysql
- Tipos de funciones para Expresiones Regulares
- Comparar Fechas en PHP
- Crear archivos en PHP
- Public, Private y Protected
- Programación Orientada a Objetos
- Formulario de contacto en PHP
- Modelo Vista Controlador
- Mostrar resultados por columnas