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:
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).
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:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários