PHP en CableNaranja

Cómo crear imágenes miniatura o thumbnails con PHP

¡Comparte nuestro contenido!

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)

En esta ocasión, vamos a aprender a hacer imágenes en miniatura o “thumbnails” por medio de PHP, algo muy típico a la hora de crear galerías de fotos o gestionar fotografías para perfiles, avatares, etc. Para lograrlo, haremos uso de las funciones GD que permiten manipular imágenes en una variedad de diferentes formatos de imagen, incluyendo GIF, PNG, JPEG, WBMP y XPM.

En afán de llegar a nuestro objetivo, vamos a retomar también algunos conceptos que vimos en el artículo: Como hacer upload de archivos con PHP ¡Manos a la obra!

Creando la función para las miniaturas

Necesitamos crear una función, la llamaremos miniatura y tendrá como parámetros 4 valores: El archivo de la imagen, el nombre del archivo en local, ancho y alto.

function miniatura($archivo, $local, $ancho, $alto){
}

Trabajemos dentro de la función. Primero necesitamos separar el nombre y la extensión del archivo en un array de 2 elementos.

$arrNombre = explode(".", $local);
$nombre = $arrNombre[0];
$extension = $arrNombre[1];

Lo siguiente revisar el tipo de archivo que hemos recibido y crear una nueva imagen a partir de él. Haremos está comprobación para 3 formatos: JPG, PNG y GIF.

if($extension=="jpg" || $extension=="jpeg") $nuevo = imagecreatefromjpeg($archivo);
if($extension=="png") $nuevo = imagecreatefrompng($archivo);
if($extension=="gif") $nuevo = imagecreatefromgif($archivo);

Ahora, creamos el thumbnail vacío con las dimensiones que le dimos como parámetro a la función.

$thumb = imagecreatetruecolor($ancho, $alto);

Y capturamos las dimensiones de la copia del archivo original

$ancho_original = imagesx($nuevo);
$alto_original = imagesy($nuevo);

Rellenamos nuestro thumbnail vacío con la función imagecopyresampled pasándole varios parámetros como el thumbnail, la copia del archivo original, las dimensiones, entre otros valores.

imagecopyresampled($thumb,$nuevo,0,0,0,0,$ancho,$alto,$ancho_original,$alto_original);

Definimos el nombre que va a llevar nuestro thumbnail, reutilizando el nombre y la extensión de antes.

$thumb_name = "thumb_$nombre.$extension";

Finalmente, exportamos el thumbnail al formato elegido.

// 90 es la calidad de compresión, Máx 100
if($extension=="jpg" || $extension=="jpeg") imagejpeg($thumb, $thumb_name,90);
if($extension=="png") imagepng($thumb, $thumb_name);
if($extension=="gif") imagegif($thumb, $thumb_name);

Ya que terminamos, vamos a generar 2 miniaturas de un archivo muestra, para poner a prueba nuestro código.

miniatura("muestra.jpg", "muestra100.jpg", 100, 100);
miniatura("muestra.jpg", "muestra256.jpg", 256, 256);

Una vez creadas, las mostramos con algo de HTML básico.

<p><img src="thumb_muestra100.jpg" alt="Miniatura" /></p>
<p><img src="thumb_muestra256.jpg" alt="Miniatura" /></p>

¡Veamos el código en acción!

¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

¡Comparte nuestro contenido!

Entradas relacionadas

2 comentarios en "Cómo crear imágenes miniatura o thumbnails con PHP"

  1. Hola

    estoy tratando e usar tu código pero me falla el imagecreatefromjpeg($archivo)

    el parametro $archivo debe ser la ruta completa del fichero verdad?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *