Trabajo con imágenes en PHP: resumen de las bibliotecas GD e Imagick
El procesamiento de imágenes es una de las tareas comunes en el desarrollo web. En PHP existen dos bibliotecas principales para trabajar con gráficos: GD (integrada) e Imagick (envoltura sobre ImageMagick). En este artículo analizaremos sus capacidades, instalación y ejemplos prácticos.
Biblioteca GD
GD es una extensión estándar de PHP, disponible en la mayoría de los alojamientos web. Permite crear, modificar y guardar imágenes en formatos JPEG, PNG, GIF, WEBP.
Instalación
En Ubuntu/Debian:
sudo apt install php-gdsudo systemctl restart apache2En Windows — descomente la línea extension=gd en php.ini.
Funciones principales de GD
imagecreatefromjpeg(),imagecreatefrompng()— cargar imagenimagesx(),imagesy()— obtener ancho y altoimagecopyresampled()— escalado con remuestreoimagefilter()— aplicar filtros (desenfoque, negativo)imagettftext()— texto con fuente TrueTypeimagejpeg(),imagepng()— guardar resultado
Ejemplo 1: Cambiar el tamaño de una imagen
<?php$src = 'photo.jpg';$dest = 'thumb.jpg';$newWidth = 300;
// Cargamos la imagen original$img = imagecreatefromjpeg($src);$width = imagesx($img);$height = imagesy($img);
// Calculamos la nueva altura proporcionalmente$newHeight = intval($height * $newWidth / $width);
// Creamos una nueva imagen$thumb = imagecreatetruecolor($newWidth, $newHeight);imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// Guardamosimagejpeg($thumb, $dest, 85);imagedestroy($img);imagedestroy($thumb);echo "Listo: $dest";?>Ejemplo 2: Superposición de marca de agua
<?php$mainImg = imagecreatefromjpeg('background.jpg');$watermark = imagecreatefrompng('logo.png');
// Obtenemos las dimensiones$mW = imagesx($mainImg);$mH = imagesy($mainImg);$wW = imagesx($watermark);$wH = imagesy($watermark);
// Posición — esquina inferior derecha con margen de 10px$dstX = $mW - $wW - 10;$dstY = $mH - $wH - 10;
// Copiamos la marca de agua con transparenciaimagecopy($mainImg, $watermark, $dstX, $dstY, 0, 0, $wW, $wH);
// Guardamosimagepng($mainImg, 'result.png');imagedestroy($mainImg);imagedestroy($watermark);?>Biblioteca Imagick
Imagick es una envoltura orientada a objetos sobre la potente herramienta ImageMagick. Soporta más de 200 formatos, transformaciones complejas, trabajo con PDF, animación y perfiles de color.
Instalación
sudo apt install imagemagick php-imagicksudo systemctl restart apache2Verificar la instalación:
<?php phpinfo(); ?>Busque la sección imagick.
Clases y métodos principales
Imagick— clase principal para trabajar con imágenesreadImage()— cargar archivoresizeImage()— cambiar tamañocropImage()— recortarcompositeImage()— superponer imágenesblurImage()— desenfocarsetImageFormat()— convertir formato
Ejemplo 3: Escalado y recorte (crop)
<?php$image = new Imagick('photo.jpg');
// Escalamos a 800x600, manteniendo proporciones$image->resizeImage(800, 600, Imagick::FILTER_LANCZOS, 1, true);
// Recortamos la parte central de 400x400$width = $image->getImageWidth();$height = $image->getImageHeight();$x = ($width - 400) / 2;$y También en la biblioteca
Envío de correo electrónico en JavaScript (Node.js) — bibliotecas y ejemplos de código
Trabajo con fechas en Go (Golang): revisión de bibliotecas y paquetes
Planificador de tareas en Go (Golang): cron, gocron y asynq
Autorización y autenticación en Go (Golang): JWT, OAuth2 y sesiones
Guía completa de Caffeine para Java: ejemplos y uso