A GD Graphics Library é uma biblioteca de software gráfico de Thomas Boutell e outros para manipulação dinâmica de imagens. Neste post veja como criar imagens com GD Graphics Library em PHP.

Sua linguagem de programação nativa é ANSI C, mas possui interfaces para muitas outras linguagens de programação. Ele pode criar GIFs, JPEGs, PNGs e WBMPs.

É muito usado com o PHP. A partir do PHP 5.3, uma versão do sistema de GD pode ser usado também para obter os recursos adicionais que foram anteriormente disponíveis apenas para a versão empacotada da GD:

 //Cabeçalho
 header("Content-Type: image/png");
 
 //Define a imagem e seu tamanho em pixels
 $image = imagecreate(256, 256);
 
 //Define a paleta de cores
 $black = imagecolorallocate($image, 0, 0, 0);
 $red = imagecolorallocate($image, 255, 0, 0);
 
 //Escreve na tela (imagem, tamanho da fonte, eixo x, eixo y, texto, cor)
 imagestring($image, 7, 55, 110, "Criandobits", $red);
 
 //Define o formato a ser gerado
 imagepng($image);
 
 //Libera variável da memória
 imagedestroy($image);

Para criar uma imagem com base em outra imagem:

 //Define a imagem a ser usada para criar outra imagem
 $image = imagecreatefromjpeg("certificado.jpg");
 
 //Cria a paleta de cores (aloque "imagecolorallocate" uma cor dentro do objeto $image)
 $titleColor = imagecolorallocate($image, 0, 0, 0);
 $gray = imagecolorallocate($image, 100, 100, 100);
 
 //Escreve na imagem
 imagestring($image, 5, 450, 150, "CERTIFICADO", $titleColor);
 imagestring($image, 5, 440, 350, utf8_decode("Benedito Silva Júnior"), $titleColor);
 imagestring($image, 3, 440, 370, utf8_decode("Concluído em ").date("d/m/Y"), $titleColor);
 
 //Obs.: Foi usado a decodificação utf-8 para mostrar as acentuações corretamente
 
 header("Content-type: image/jpeg");
 
 //Define o tipo da imagem e cria o arquivo físico, definindo a qualidade (0 a 100)
 imagejpeg($image, "certificado-".date("Y-m-d").".jpg", 50);
 
 imagedestroy($image);

Exemplo de geração de um certificado de conclusão de curso:

 $image = imagecreatefromjpeg("certificado.jpg");
 
 $titleColor = imagecolorallocate($image, 0, 0, 0);
 $gray = imagecolorallocate($image, 100, 100, 100);
 
 /* Escreve na imagem. Parâmetros: imagem ($image), tam. fonte (32), ângulo (0), eixo x (300), 
 eixo y (150), cor fonte ($titleColor), tipo fonte (caminho onde o arquivo da fonte está 
 armazenado: __DIR__.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR. "Bevan".DIRECTORY_SEPARATOR."Bevan-Regular.ttf"), 
 texto ("CERTIFICADO") */ 
 imagettftext ($image, 32, 0, 300, 150, $titleColor, __DIR__.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR. "Bevan".DIRECTORY_SEPARATOR."Bevan-Regular.ttf","CERTIFICADO");

 imagettftext($image, 32, 0, 100, 220, $titleColor, __DIR__.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR."Playball". DIRECTORY_SEPARATOR."Playball-Regular.ttf", "Certifico que Benedito Silva Júnior concluiu o "); 

 imagettftext($image, 32, 0, 100, 280, $titleColor, __DIR__.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR."Playball". DIRECTORY_SEPARATOR."Playball-Regular.ttf", "curso de Programação PHP com a carga horária "); 
 
 imagettftext($image, 32, 0, 100, 340, $titleColor, __DIR__.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR."Playball". DIRECTORY_SEPARATOR."Playball-Regular.ttf", "de 12 horas com o aproveitamento de 100%");

 imagestring($image, 3, 440, 400, "www.criandobits.com.br ", $titleColor);
 imagestring($image, 3, 440, 450, utf8_decode("Concluído em ").date("d/m/Y"), $titleColor);
 
 header("Content-Type: image/jpeg");
  
 imagejpeg($image, "certificado-".date("Y-m-d").".jpg", 50);
 
 imagedestroy($image);

Os códigos acima gera um arquivo .jpg dentro do diretório onde o arquivo .php foi executado. Para que a imagem seja criada é necessário disponibilizar o arquivo “certificado.jpg”, sobre qual serão preenchidos o conteúdo do certificado:

certificado com gd Graphics Library

Para gerar miniaturas de outra imagens maiores (thumbnail), de forma a evitar o carregamento das imagens originais, poupando tempo e tráfego de dados, faça o seguinte:

 header("Content-Type: image/jpeg");

 //Define o arquivo de imagem a ser miniaturizado
 $file = "Dizzy.jpg";

 //Defina a nova altura e largura da miniatura
 $new_width = 256;
 $new_height = 256;

 //Armazena as dimensões da imagem original em uma list
 list($old_width, $old_height) = getimagesize($file);

 //Cria a nova imagem carregando a paleta de 16 mi de cores
 $new_image = imagecreatetruecolor($new_width, $new_height);

 //Recria a imagem original
 $old_image = imagecreatefromjpeg($file);

 /* Mescla as duas imagens. Parâmetros: nova imagem, imagem origem, 
 ponto início do eixo x da img de destino, ponto início do eixo y da img de destino, ponto 
 início do eixo x da img de origem, ponto início do eixo y da img de origem, nova largura, 
 nova altura, largura imagem origem, altura imagem origem */
imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height);

 //Gera a nova imagem
 imagejpeg($new_image);

 //Limpa as imagens da memória
 imagedestroy($old_image);
 imagedestroy($new_image);

O recurso acima é importante quando precisamos exibir apenas uma pequena amostra de imagens de alta resolução.

Para habilitar este recurso no Apache, abra o arquivo php.ini e inclua as seguintes linhas:

;GD library
extension=php_gd.dll
extension=php_gd2.dll

Caso você não tenha as DLLs necessárias acima, baixe em https://windows.php.net/download (baixe de acordo com a versão do seu PHP).

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Upload de arquivos em PHP

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags: | |

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *