Trabalho com imagens em PHP: guia completo sobre 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: bibliotecas GD e Imagick



O processamento de imagens é uma das tarefas essenciais do desenvolvimento web. Em PHP, duas bibliotecas principais são usadas para isso: GD (integrada) e Imagick (um wrapper sobre o ImageMagick). Neste artigo, exploraremos suas capacidades, aprenderemos a redimensionar, cortar, aplicar marcas d'água e otimizar imagens.



1. Biblioteca GD



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



Carregamento e verificação:

<?php// Verificamos se a extensão GD está instaladaif (extension_loaded('gd') && function_exists('gd_info')) {    echo "GD está instalada: ";    print_r(gd_info());} else {    echo "GD não encontrada";}?>


1.1 Redimensionamento de imagem (resize)



O cenário mais comum é reduzir a imagem para o tamanho desejado, mantendo as proporções.



<?phpfunction resizeImage($sourcePath, $destPath, $newWidth, $newHeight) {    // Obtemos as dimensões da imagem original    list($width, $height, $type) = getimagesize($sourcePath);        // Criamos um recurso a partir do arquivo original    switch ($type) {        case IMAGETYPE_JPEG:            $source = imagecreatefromjpeg($sourcePath);            break;        case IMAGETYPE_PNG:            $source = imagecreatefrompng($sourcePath);            break;        case IMAGETYPE_GIF:            $source = imagecreatefromgif($sourcePath);            break;        default:            return false;    }        // Criamos uma nova imagem    $newImage = imagecreatetruecolor($newWidth, $newHeight);        // Mantemos a transparência para PNG/GIF    imagealphablending($newImage, false);    imagesavealpha($newImage, true);        // Copiamos e redimensionamos    imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);        // Salvamos o resultado    imagejpeg($newImage, $destPath, 85); // Qualidade 85%        // Liberamos a memória    imagedestroy($source);    imagedestroy($newImage);    return true;}

// Exemplo de usoresizeImage('photo.jpg', 'photo_thumb.jpg', 300, 200);?>


1.2 Corte de imagem (crop)



O corte permite extrair a parte central da imagem no tamanho desejado.



<?phpfunction cropCenter($sourcePath, $destPath, $cropWidth, $cropHeight) {    list($width, $height) = getimagesize($sourcePath);    $source = imagecreatefromjpeg($sourcePath);        // Calculamos as coordenadas do centro    $x = ($width - $cropWidth) / 2;    $y = ($height - $cropHeight) / 2;        $newImage = imagecreatetruecolor($cropWidth, $cropHeight);    imagecopyresampled($newImage, $source, 0, 0, $x, $y, $cropWidth, $cropHeight, $cropWidth, $cropHeight);        imagejpeg($newImage, $destPath, 90);    imagedestroy($source);    imagedestroy($newImage);}

cropCenter('photo.jpg', 'photo_cropped.jpg', 400, 400);?>


1.3 Aplicação de marca d'água



Adicionar texto ou logotipo sobre a imagem.



<?phpfunction addWatermarkText($sourcePath, $destPath, $text = "© PythonLib.ru") {    $source = imagecreatefromjpeg($sourcePath);    $width = imagesx($source);    $height = imagesy($source);        // Cor do texto (branco com transparência)    $color = imagecolorallocatealpha($source, 255, 255, 255, 50);        // Tamanho da fonte (usamos a fonte integrada)    $fontSize = 5;    $x = 10;    $y = $height - 20;        imagestring($source, $fontSize, $x, $y, $text, $color);        imagejpeg($source, $destPath, 90);    imagedestroy($source);}

addWatermarkText('photo.jpg', 'photo_watermarked.jpg');?>


2. Biblioteca Imagi

Recommendations