Criando imagens com PHP
A criação dinâmica de imagens é uma função importante e útil do PHP, pois ela nos possibilita, por exemplo, a criação de gráficos para enquetes ou botões dinâmicos padronizados para websites, sem a necessidade de encher o servidor com arquivos de imagem.
O primeiro passo é ativar o suporte à imagens em sua cópia do PHP. A biblioteca gd já acompanha o próprio PHP a partir da versão 4.3. Caso esteja usando uma versão inferior, você poderá fazer o download da biblioteca no endereço www.boutell.com/gd/. No caso do Windows as imagens do tipo PNG e JPEG são suportadas por default. Geralmente as distribuições Linux já instalam as bibliotecas necessárias para a visualização e criação de arquivos jpg e png por default, mas mesmo assim, certifique-se de que a libpng (www.libpng.org/pub/png/), zlib (www.zlib.org/zlib/) e jpeg-6b (ftp://ftp.uu.net/graphics/jpeg) estão instaladas corretamente em seu sistema para poder trabalhar com a gd.
Principais funções de manipulação de imagem
ImageCreate - Cria uma imagem em branco com a dimensão x e y. Sua sintaxe é:
imagecreate (int X, int Y);
Ex: $img=imagecreate (200,100);
imagecolorallocate - Cria uma cor no padrão RGB para ser usada posteriormente. A primeira cor definida será automaticamente usada para o fundo da imagem.
int imagecolorallocate (resource image, int red, int green, int blue);
Ex: imagecolorallocate($img, 200,100,100);
imagestring - Desenha um texto na imagem criada nas posições x e y, com a cor e o tamanho da fonte desejado. Esta função é utilizada, por exemplo, para criar botões e banners dinamicamente.
int imagestring (resource image, int font, int x, int y, string texto, int cor);
Ex: imagestring($img, 4, 10,10, "TEXTO", $cor);
imagepng - Envia ao browser a imagem criada, no formato PNG.
int imagepng (resource image [, string filename]);
Ex: imgpng($img);
imagejpeg - Envia ao browser a imagem criada, no formato JPEG.
int imagejpeg (resource image [, string filename [, int quality]])
Ex: imagejpeg($img,"","72")
Envia ao browser a imagem com qualidade 72. O valor de qualidade vai de 0 a 95, sendo que quanto maior o valor, maior a qualidade e o tamanho da imagem.
imageline - Cria uma linha em uma imagem de acordo com as coordenadas passadas. Muito usada para desenhar as bordas de botões.
int imageline (resource image, int x1, int y1, int x2, int y2, int col)
Ex: imageline($img,$x1,$y1,$x2,$y2,$cor);
Onde $img é o identificador da imagem em que você está criando, $x1 é a posição horizontal, em pixels, do início da linha, $y1 é a posição vertical de início da linha, e $x2 e $y2 são as coordenadas finais da linha. As posições são contadas a partir do canto superior esquerdo da imagem, que equivale à coordenada (0,0).
imagepolygon - Desenha um polígono, com as coordenadas de cada ponto definidas em um array. Veremos um pequeno exemplo do uso de polígonos logo em seguida.
int imagepolygon (resource image, array points, int num_points, int col)
Substitua num_points pelo número de vértices do polígono.
ImageDestroy - Retira a imagem criada da memória.
ImageDestroy (resource image);
Ex: ImageDestroy ($im);
Alguns exemplos
<?php
$img=imagecreate(100,50);
$cor_fundo = imagecolorallocate($img, 255,0,0);
$cor = imagecolorallocate($img, 0,0,255);
imagestring($img, 2, 10,10, "Olá Mundo", $cor);
imagejpeg($img);
ImageDestroy($img);
?>
Esse código criará uma imagem de 100x50 pixels, usando vermelho como cor de fundo e apresentando o texto "Olá Mundo", escrito em fonte com tamanho 2 e cor azul. Ela é exibida ao browser no formato JPEG e logo em seguida "destruída", para liberar memória.
Como utilizar em seu website?
Crie o arquivo chamado imagem.php e adicione essas linhas:
<?php
$img=imagecreate(100,50);
$cor_fundo = imagecolorallocate($img, 200,100,100);
$cor = imagecolorallocate($img, 0,0,255);
imagestring($img, 2, 10,10, $_GET[texto], $cor);
imagejpeg($img);
ImageDestroy($img);
?>
Depois crie um arquivo chamado: exemplo.htm e adicione o código a seguir:
ImageDestroy (resource image);
Depois crie um arquivo chamado: exemplo.htm e adicione o código a seguir:
Imagem gerada dinamicamente
Execute a página exemplo.htm em algum browser e a saída será uma imagem com o fundo em vermelho e o texto "enviar" em azul. Você pode colocar qualquer string no lugar de "enviar", criando assim um padrão nos botões de seus site. Mas tome cuidado para que o tamanho do texto não seja maior que o tamanho da imagem, ou o texto ficará cortado.
Polígonos
Crie um arquivo chamado poligono.php com o conteúdo a seguir:
<?php
$a = array(
"0" => "20", // x1
"1" => "30", // y1
"2" => "10", // x2
"3" => "220", // y2
"4" => "30", // x3
"5" => "30", // y3
"6" => "140", // x4
"7" => "30", // y4
"8" => "30", // x5
"9" => "10", // y5
"10" => "40", // x6
"11" => "5", // y6
);
$im = ImageCreate (250, 250);
$branco = ImageColorAllocate ($im, 255, 255, 255); //Fundo da imagem
$azul = ImageColorAllocate ($im, 0, 0, 255); //cor do poligono
ImageFilledPolygon ($im, $a, 6, $azul);
ImagePng ($im);
?>
Depois crie o arquivo exemplo2.htm para exibir a imagem do polígono e adicione as seguintes linhas:
Polígonos
A saída desse arquivo será um polígono de 6 vértices, na cor azul com o fundo branco, no formato PNG.
Criando um sistema de pesquisa
Primeiro vamos criar o banco de dados MySQL. Crie um tabela chamada resultados, com a seguinte estrutura:
id = Int(15) autoincrement
id_enquete = Int(15)
resposta = char(1)
Agora crie um arquivo chamado enquete.htm. Este arquivo será o responsável por mostrar o formulário com a pergunta e as respostas da pesquisa. Adicione as seguintes linhas:
Exemplo de Enquete
Qual navegador você utiliza?