Como crear imágenes miniatura o thumbnails con PHP

PHP en CableNaranja
PHP en CableNaranja

¡Comparte nuestro contenido!

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!

Israel García

Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.

Podría también gustarte...

Deja un comentario

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

shares