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

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