Ya hemos visto en este blog como usar algunas de las funciones de la librería GD. Hoy le va a tocar el turno a la función imagecopyresampled, que nos va a permitir escalar una imagen. El código para generar el thumbnail mediante esta función es el siguiente:
<?php define('ANCHO', 100); $image_path = $_GET['i']; // Cargamos la imagen original $original = imagecreatefromjpeg($image_path); // obtenemos el ancho y el alto $original_x = imagesx($original); $original_y = imagesy($original); // calculamos el nuevo alto de la imagen, para que guarde la relación // de aspecto $alto_destino = round($original_y * ANCHO / $original_x, 0); // creamos la imagen del thumbnail $destino = imagecreatetruecolor(ANCHO, $alto_destino); // copiamos la imagen original y la escalamos imagecopyresampled($destino, $original, 0, 0, 0, 0, ANCHO, $alto_destino, $original_x, $original_y); // mostramos la imagen del thumbnail header('Content-Type: image/jpeg'); imagejpeg($destino); // destruimos las imagenes imagedestroy($destino); imagedestroy($original);
Podríamos modificar este script para que guardara los thumbnails en un directorio, y si ya existe no haría falta volver a generarlo, pero eso lo dejamos mejor como pequeña práctica.