
No desenvolvimento web é frequente ter de trabalhar imagens: avatares, banners, miniaturas ou qualquer outra imagem que o teu site tenha de mostrar. O PHP traz várias bibliotecas para o tratamento de imagens, com destaque para a GD e a Imagick. Este artigo mostra as principais funcionalidades de ambas, com exemplos de código para usares na tua aplicação PHP.
Usar a biblioteca GD em PHP
A GD é uma biblioteca do PHP para manipular imagens. Vem incluída na maioria das instalações do PHP por omissão, o que faz dela uma solução simples e sempre à mão. A GD suporta os seguintes formatos de imagem: JPG, PNG, GIF, BMP e WBMP.
Carregar e mostrar uma imagem com a GD
Para carregar uma imagem com a GD, usa a função imagecreatefrom*() correspondente ao tipo de imagem (jpg, png, gif, etc.). Devolve um recurso GD que representa a imagem carregada em memória. Depois podes usar header e a função image*() correspondente ao formato (imagejpeg, imagepng, imagegif, etc.) para enviar a imagem para o navegador.
<?php
// Carregar a imagem num recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Mostrar a imagem
header('Content-Type: image/jpeg');
imagejpeg($image);Redimensionar uma imagem com a GD
Para redimensionar uma imagem com a GD, usa a função imagecopyresampled. Copia e redimensiona uma imagem GD para as dimensões que lhe indicares, com interpolação para manter a qualidade da imagem redimensionada.
<?php
// Carregar a imagem num recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Redimensionar a imagem
$image_resized = imagecreatetruecolor(200, 200);
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, 200, 200, imagesx($image), imagesy($image));
// Mostrar a imagem redimensionada
header('Content-Type: image/jpeg');
imagejpeg($image_resized);Acrescentar texto a uma imagem com a GD
Para acrescentar texto a uma imagem com a GD, usa a função imagettftext. Desenha texto sobre uma imagem GD, indicando a fonte, o tamanho, o ângulo e a cor do texto.
<?php
// Carregar a imagem num recurso GD
$image = imagecreatefromjpeg('image.jpg');
// Acrescentar texto à imagem
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', 'Hello World !');
// Mostrar a imagem
header('Content-Type: image/jpeg');
imagejpeg($image);Usar a biblioteca Imagick
A Imagick é outra biblioteca do PHP para o tratamento de imagens. Oferece funcionalidades mais avançadas do que a GD, como a gestão de camadas e de máscaras, a conversão de formato, a deteção de contornos e a redução de ruído. A Imagick suporta um grande número de formatos de imagem, incluindo formatos vetoriais como o SVG.
Para usares a Imagick, tens primeiro de confirmar que a extensão PHP imagick está instalada e ativada no teu servidor. Podes verificá-lo com o seguinte comando:
php -m | grep imagickSe a Imagick aparecer na lista das extensões carregadas, podes usar as classes e os métodos da biblioteca no teu código PHP. Caso contrário, terás de instalar e ativar a extensão Imagick no servidor.
Carregar e mostrar uma imagem com a Imagick
Para carregar uma imagem com a Imagick, cria um objeto da classe Imagick indicando o caminho da imagem. Esse objeto representa a imagem carregada em memória e podes usar os seus métodos para a manipular. Para a mostrar, basta um echo sobre o objeto Imagick.
<?php
// Carregar a imagem num objeto Imagick
$imagick = new Imagick('image.jpg');
// Mostrar a imagem
header('Content-Type: image/jpeg');
echo $imagick;Redimensionar uma imagem com a Imagick
Para redimensionar uma imagem com a Imagick, usa o método resizeImage do objeto Imagick. Este método redimensiona a imagem para as dimensões indicadas, com um filtro de resampling para manter a qualidade da imagem redimensionada. A Imagick propõe vários filtros de resampling, como FILTER_LANCZOS, FILTER_BOX ou FILTER_CUBIC.
<?php
// Carregar a imagem num objeto Imagick
$imagick = new Imagick('image.jpg');
// Redimensionar a imagem
$imagick->resizeImage(200, 200, Imagick::FILTER_LANCZOS, 1);
// Mostrar a imagem redimensionada
header('Content-Type: image/jpeg');
echo $imagick;Acrescentar texto a uma imagem com a Imagick
Para acrescentar texto a uma imagem com a Imagick, usa o método annotateImage do objeto Imagick. Este método acrescenta texto à imagem indicando a fonte, o tamanho, o ângulo e a cor do texto.
<?php
// Carregar a imagem num objeto Imagick
$imagick = new Imagick('image.jpg');
// Acrescentar texto à imagem
$draw = new ImagickDraw();
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
$draw->setFillColor('black');
$imagick->annotateImage($draw, 10, 30, 0, 'Hello World !');
// Mostrar a imagem
header('Content-Type: image/jpeg');
echo $imagick;
Conclusão
Neste artigo vimos as principais funcionalidades das bibliotecas GD e Imagick para o tratamento de imagens em PHP: como carregar e mostrar uma imagem, como redimensioná-la e como lhe acrescentar texto. Já podes aproveitar estes exemplos de código para integrar estas funcionalidades na tua aplicação PHP. Explora também os outros métodos e opções que as duas bibliotecas propõem, para alargar ainda mais o que consegues fazer com imagens em PHP.


