[PHP] Introdução à GDLib
Posted on August 3rd, 2007 in Programação
Olá a todos,
Muitos de vocês já devem ter visto a minha assinatura em alguns forums (Techzone e Portugal-a-Programar). Os mais atentos devem também ter reparado que a assinatura muda cada vez que eu escrevo um novo post.
É claro que preguiçoso como sou, não ia estar sempre a criar uma nova assinatura no GIMP (por exemplo) cada vez que fizesse um post.
Para isso uso uma biblioteca do PHP - a GDLib. A GDLib permite-nos manipular imagens usando PHP. Os usos mais comuns são a criação de thumbnails a partir de imagens maiores, estatísticas, etc…
Continue a ler…
Antes de mais vamos verificar se temos a GDLib instalada:
print_r(gd_info());
?>
No meu caso, o output foi o seguinte:
Array
(
[GD Version] => 2.0 or higher
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] => 1
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] =>
[JIS-mapped Japanese Font Support] =>
)
Se não tiverem a GDLib instalada, vão ter de a instalar. Existem vários sites que o ensinam, google it.
Se tiverem dúvidas sobre o funcionamento de alguma função, no decorrer deste post, aconselho que visitem a documentação do PHP, onde encontrarão no menu do lado esquerdo, todas as funções utilizadas neste post.
Neste post vamos criar uma imagem com o famoso Hello World.
Para tal vamos começar por criar um pequeno rectângulo de largura 100 pixels e altura 50 pixels.
//Criar imagem
$im = imagecreate(100,50);
?>
Simples certo? Temos a nossa imagem criada, mas ainda não a podemos ver.
Vamos agora adicionar uma cor ao fundo, e criar outras cores que nos vão ser úteis para a nossa imagem.
//Criar imagem
$im = imagecreate(100,50);
//Cor de fundo
$fundo = imagecolorallocate($im, 0, 0, 255);
//Outras Cores
$branco = imagecolorallocate($im, 255, 255, 255);
$preto = imagecolorallocate($im, 0, 0, 0);
$azul = imagecolorallocate($im, 0, 0, 255);
?>
Como podem ver, para “construir” uma cor, usamos as suas componentes R(ed)G(reen)B(lue).
Agora vamos passar à acção propriamente dita. Com os preparativos feitos, vamos fazer algo que seja visivel. Como temos um fundo azul, vamos desenhar um rectângulo branco no meio, onde vamos escrever o nosso Hello World posteriormente:
//Criar imagem
$im = imagecreate(100,50);
//Cor de fundo
$fundo = imagecolorallocate($im, 0, 0, 255);
//Outras Cores
$branco = imagecolorallocate($im, 255, 255, 255);
$preto = imagecolorallocate($im, 0, 0, 0);
$azul = imagecolorallocate($im, 0, 0, 255);
//Desenhar rectângulo branco
imagefilledrectangle($im, 5, 5, 94, 44, $branco);
header("Content-type: image/png");
imagepng($im);
?>
Com este código já conseguimos ver alguma coisa, graças ao header e à função imagepng.
A função do header é dizer ao browser que o que vai mostrar é uma imagem, por isso o browser intrepreta a página como se fosse uma imagem normal. A função imagepng() mostra, neste caso com compressão PNG, a imagem que temos vindo a trabalhar.
Finalmente, vamos escrever o Hello World:
//Criar imagem
$im = imagecreate(100,50);
//Cor de fundo
$fundo = imagecolorallocate($im, 0, 0, 255);
//Outras Cores
$branco = imagecolorallocate($im, 255, 255, 255);
$preto = imagecolorallocate($im, 0, 0, 0);
$azul = imagecolorallocate($im, 0, 0, 255);
//Desenhar rectângulo branco
imagefilledrectangle($im, 5, 5, 94, 44, $branco);
//Hello World
imagestring($im, 3, 25, 10, "Hello", $preto);
imagestring($im, 3, 35, 25, "World", $preto);
header("Content-type: image/png");
imagepng($im);
?>
Resultado Final:
![[PHP] Introdução à GDLib](http://blog.pedrodiogo.com/wp-content/uploads/2007/08/gdlib.png)
E pronto, temos finalmente o nosso Hello World escrito, e podemos finalmente mostrar aos nossos amigos tudo aquilo que aprendemos.
Se por acaso quiserem mostrar a imagem em qualquer outra página, podem fazê-lo directamente, como se fosse uma imagem, apontando para o ficheiro PHP que criaram.
Qualquer dúvida e sugestão deixem aqui um comentário,
Abraços,
Pedro Diogo

One Response
[...] de ontem termos aprendido os básicos, vamos agora avançar para um exemplo simples, com aplicação [...]