
En el desarrollo web es habitual tener que manipular imágenes para mostrar avatares, banners, miniaturas o cualquier otro tipo de imagen en tu sitio. PHP ofrece varias librerías para la gestión de imágenes, en particular GD e Imagick. En este artículo te presentamos las funciones principales de ambas librerías y te damos ejemplos de código para usarlas en tu aplicación PHP.
Usar la librería GD en PHP
GD es una librería de PHP que permite manipular imágenes. Viene incluida en la mayoría de instalaciones de PHP por defecto, lo que la convierte en una solución fácil de usar y accesible. GD admite los siguientes formatos de imagen: JPG, PNG, GIF, BMP y WBMP.
Cargar y mostrar una imagen con GD
Para cargar una imagen con GD puedes usar la función imagecreatefrom(à indicando el tipo de imagen (jpg, png, gif, etc.). Esta función devuelve un recurso GD que representa la imagen cargada en memoria. Después puedes usar la función header y la función image() correspondiente al formato de la imagen (imagejpeg, imagepng, imagegif, etc.) para mostrar la imagen en el navegador.
<?php
// Cargar la imagen en un recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Mostrar la imagen
header('Content-Type: image/jpeg');
imagejpeg($image);Redimensionar una imagen con GD
Para redimensionar una imagen con GD puedes usar la función imagecopyresampled. Esta función copia y redimensiona una imagen GD indicando las dimensiones de destino y aplicando una interpolación que mejora la calidad de la imagen redimensionada.
<?php
// Cargar la imagen en un recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Redimensionar la imagen
$image_resized = imagecreatetruecolor(200, 200);
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, 200, 200, imagesx($image), imagesy($image));
// Mostrar la imagen redimensionada
header('Content-Type: image/jpeg');
imagejpeg($image_resized);Añadir texto a una imagen con GD
Para añadir texto a una imagen con GD puedes usar la función imagettftext. Esta función añade texto a una imagen GD indicando la fuente, el tamaño, el ángulo y el color del texto.
<?php
// Cargar la imagen en un recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Añadir texto a la imagen
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', 'Hello World !');
// Mostrar la imagen
header('Content-Type: image/jpeg');
imagejpeg($image);Usar la librería Imagick
Imagick es otra librería de PHP para la gestión de imágenes. Ofrece funciones más avanzadas que GD, como la gestión de capas y máscaras, la conversión de formato, la detección de bordes y la reducción de ruido. Imagick admite un gran número de formatos de imagen, incluidos los formatos vectoriales como SVG.
Para usar Imagick, primero tienes que comprobar que la extensión de PHP imagick está instalada y activada en tu servidor. Puedes comprobarlo ejecutando el siguiente comando:
php -m | grep imagickSi Imagick aparece en la lista de extensiones cargadas, puedes usar las clases y los métodos de la librería en tu código PHP. Si no, tendrás que instalar y activar la extensión Imagick en tu servidor.
Cargar y mostrar una imagen con Imagick
Para cargar una imagen con Imagick puedes crear un objeto de la clase Imagick indicando la ruta de la imagen. Ese objeto representa la imagen cargada en memoria y puedes usar sus métodos para manipularla. Para mostrar la imagen basta con aplicar la función echo al objeto Imagick.
<?php
// Cargar la imagen en un objeto Imagick
$imagick = new Imagick('image.jpg');
// Mostrar la imagen
header('Content-Type: image/jpeg');
echo $imagick;Redimensionar una imagen con Imagick
Para redimensionar una imagen con Imagick puedes usar el método resizeImage del objeto Imagick. Este método redimensiona la imagen indicando las dimensiones de destino y aplicando un filtro de resampling que mejora la calidad de la imagen redimensionada. Imagick ofrece varios filtros de resampling, como FILTER_LANCZOS, FILTER_BOX o FILTER_CUBIC.
<?php
// Cargar la imagen en un objeto Imagick
$imagick = new Imagick('image.jpg');
// Redimensionar la imagen
$imagick->resizeImage(200, 200, Imagick::FILTER_LANCZOS, 1);
// Mostrar la imagen redimensionada
header('Content-Type: image/jpeg');
echo $imagick;Añadir texto a una imagen con Imagick
Para añadir texto a una imagen con Imagick puedes usar el método annotateImage del objeto Imagick. Este método añade texto a la imagen indicando la fuente, el tamaño, el ángulo y el color del texto.
<?php
// Cargar la imagen en un objeto Imagick
$imagick = new Imagick('image.jpg');
// Añadir texto a la imagen
$draw = new ImagickDraw();
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
$draw->setFillColor('black');
$imagick->annotateImage($draw, 10, 30, 0, 'Hello World !');
// Mostrar la imagen
header('Content-Type: image/jpeg');
echo $imagick;
Conclusión
En este artículo hemos presentado las funciones principales de las librerías GD e Imagick para la gestión de imágenes en PHP. Hemos visto cómo cargar y mostrar una imagen, cómo redimensionarla y cómo añadirle texto. Ya puedes usar estos ejemplos de código para integrar estas funciones en tu aplicación PHP. No dudes en explorar los demás métodos y opciones que ofrecen ambas librerías para ampliar todavía más las posibilidades de tratamiento de imágenes en PHP.


