Trabalho com imagens em PHP: bibliotecas GD e Imagick

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com imagens em PHP: visão geral das bibliotecas GD e Imagick



O processamento de imagens é uma das tarefas comuns no desenvolvimento web. No PHP, existem duas bibliotecas principais para trabalhar com gráficos: GD (integrada) e Imagick (wrapper sobre ImageMagick). Neste artigo, abordaremos suas funcionalidades, instalação e exemplos práticos.



Biblioteca GD

GD é uma extensão padrão do PHP, disponível na maioria das hospedagens. Permite criar, modificar e salvar imagens nos formatos JPEG, PNG, GIF, WEBP.



Instalação

No Ubuntu/Debian:

sudo apt install php-gdsudo systemctl restart apache2


No Windows — descomente a linha extension=gd no php.ini.



Funções principais do GD

  • imagecreatefromjpeg(), imagecreatefrompng() — carregar imagem
  • imagesx(), imagesy() — obter largura e altura
  • imagecopyresampled() — redimensionar com reamostragem
  • imagefilter() — aplicar filtros (desfoque, negativo)
  • imagettftext() — texto com fonte TrueType
  • imagejpeg(), imagepng() — salvar o resultado


Exemplo 1: Redimensionar imagem

<?php$src = 'photo.jpg';$dest = 'thumb.jpg';$newWidth = 300;

// Carregar imagem original$img = imagecreatefromjpeg($src);$width = imagesx($img);$height = imagesy($img);

// Calcular nova altura proporcionalmente$newHeight = intval($height * $newWidth / $width);

// Criar nova imagem$thumb = imagecreatetruecolor($newWidth, $newHeight);imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

// Salvarimagejpeg($thumb, $dest, 85);imagedestroy($img);imagedestroy($thumb);echo "Pronto: $dest";?>


Exemplo 2: Aplicar marca d'água

<?php$mainImg = imagecreatefromjpeg('background.jpg');$watermark = imagecreatefrompng('logo.png');

// Obter dimensões$mW = imagesx($mainImg);$mH = imagesy($mainImg);$wW = imagesx($watermark);$wH = imagesy($watermark);

// Posição — canto inferior direito com margem de 10px$dstX = $mW - $wW - 10;$dstY = $mH - $wH - 10;

// Copiar marca d'água com transparênciaimagecopy($mainImg, $watermark, $dstX, $dstY, 0, 0, $wW, $wH);

// Salvarimagepng($mainImg, 'result.png');imagedestroy($mainImg);imagedestroy($watermark);?>


Biblioteca Imagick

Imagick é um wrapper orientado a objetos sobre a poderosa ferramenta ImageMagick. Suporta mais de 200 formatos, transformações complexas, trabalho com PDF, animação e perfis de cores.



Instalação

sudo apt install imagemagick php-imagicksudo systemctl restart apache2


Verificar instalação:

<?php phpinfo(); ?>

Procure pela seção imagick.



Principais classes e métodos

  • Imagick — classe principal para trabalhar com imagens
  • readImage() — carregar arquivo
  • resizeImage() — redimensionar
  • cropImage() — cortar
  • compositeImage() — sobrepor imagens
  • blurImage() — desfocar
  • setImageFormat() — converter formato


Exemplo 3: Redimensionamento e corte (crop)

<?php$image = new Imagick('photo.jpg');

// Redimensionar para 800x600, mantendo proporções$image->resizeImage(800, 600, Imagick::FILTER_LANCZOS, 1, true);

// Cortar a parte central de 400x400$width = $image->getImageWidth();$height = $image->getImageHeight();$x = ($width - 400) / 2;$y

Recommendations