Trabajo con imágenes en PHP: bibliotecas GD e Imagick

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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 apache2


En Windows — descomente la línea extension=gd en php.ini.



Funciones principales de GD

  • imagecreatefromjpeg(), imagecreatefrompng() — cargar imagen
  • imagesx(), imagesy() — obtener ancho y alto
  • imagecopyresampled() — escalado con remuestreo
  • imagefilter() — aplicar filtros (desenfoque, negativo)
  • imagettftext() — texto con fuente TrueType
  • imagejpeg(), 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 apache2


Verificar la instalación:

<?php phpinfo(); ?>

Busque la sección imagick.



Clases y métodos principales

  • Imagick — clase principal para trabajar con imágenes
  • readImage() — cargar archivo
  • resizeImage() — cambiar tamaño
  • cropImage() — recortar
  • compositeImage() — superponer imágenes
  • blurImage() — desenfocar
  • setImageFormat() — 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

Recommendations