quinta-feira, 13 de janeiro de 2011

PHP criando gráficos .png

Como já mencionamos em post anterior, PHP é uma linguagem de programação genérico, muito parecido com a linguagem C. Mas também tem muitas facilidades para utilizar na criação de páginas web.

Aqui vamos mostrar a facilidade de se utilizar o PHP para criação de gráficos, ou seja criação de imagem tipo PNG.

A primeira rotina a ser utilizada é a seguinte:
$im = imagecreatetruecolor ( int $width , int $height );
Esta rotina cria um apontador para uma imagem ($im) com largura ($width) e altura ($height); Não se esqueça de definir $width e $height antes de utilizá-los.

A segunda  rotina a ser utilizada define as cores que pretendemos utilizar no nosso gráfico:
$background = imagecolorallocate($im, 0, 0, 0);
Os parâmetros para esta rotina são o ponteiro que criamos na primeira rotina ($im) e os níveis de cada cor R, G, B ou seja Vermelho, Verde, e Azul. A primeira vez que esta rotina é chamada, define a cor do fundo da imagem. Neste exemplo, criei um fundo preto (zero vermelho, zero verde, e zero azul). A rotina retorna um ponteiro para a cor na palete de cores do gráfico. Esta rotina deve ser chamada diversas vezes para a definição das cores que pretendemos utilizar.
 $text_color = imagecolorallocate($im, 255, 255, 255);
 $line_color = imagecolorallocate($im, 0, 0, 255);
 $bar_color = imagecolorallocate($im, 0, 255, 0);
Assim criamos um gráfico com fundo preto, texto branco, cor da linha azul e cor da barra verde.

Após criarmos o ponteiro para a imagem e definirmos as cores que pretendemos utilizar, podemos desenhar segmentos de retas entre dois pontos utilizando a função:
imageline($im, $x1, $y1, $x2, $y2, $line_color);
onde $im é o ponteiro para o nosso gráfico, criado pela primeira rotina; $x1 e $y1 definem o ponto inicial da reta; $x2 e $y2 definem o ponto final da reta; e a variável $line_color aponta para a cor que desejamos na palete de cores que criamos com o segundo comando (neste exemplo, o azul).

O comando para acrescentar texto no nosso gráfico é a função:
 imagestring($im, $font_size, $x, $y, $text, $text_color);
onde $im é o ponteiro para o nosso gráfico; $font_size indica o tamanho da fonte de caracteres (pode variar de 1 a 5 para as fontes pre-definidas); $x e $y são as coordenadas onde o texto deve ser escrito; $text é a string de texto a ser escrito; e $text_color aponta para a cor que desejamos na palete de cores que criamos com o segundo comando (neste exemplo, o branco).

Tendo finalizado o nosso gráfico, utilizamos a rotina
imagepng($im);
para enviar a imagem pela saída padrão. Ou seja, este comando (se usado em uma página web) envia a imagem criada para o navegador do visitante.

A última rotina que devemos utilizar é:
imagedestroy($im);
que libera a memória reservada para o ponteiro pelo primeiro comando que mencionamos.

Observações importantes:
1) Para visualizar a imagem em uma página web, é necessário colocar
<img src="image.php" >
dentro do código HTML da página.

2) O arquivo image.php deve gerar a imagem desejada.

3) O arquivo image.php deve enviar ao navegador o seguinte texto, antes de enviar a imagem
 header("Content-type: image/png");
para indicar que os dados a seguir devem ser interpretados como uma imagem.

4) Na definição do espaço a ser utilizado pelo gráfico, a posição 0,0 é a do canto superior esquerdo. X na horizontal e Y na vertical.


Exemplos de gráficos que criei utilizando PHP podem ser vistos na minha página de estatísticas de banners.