Web Analytics
We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Revista do Linux
Revista Do Linux  
EDIÇÃO DO MÊS
  Ambientes Gráficos
  Atualidade
  Capa
  Crusoe
  Desenvolvimento Web
  Divirta-se
  Entrevista
  Estudo de Caso
  Ferramentas
  Flagship
  Linha de Comando
  Segurança
  Tecnologia

Gráficos em PHP
Como criar gráficos dinamicamente usando programação em PHP


Márcio Macedo
marciom@conectiva.com.br

De todas as facilidades que o PHP proporciona no desenvolvimento de um site ou de uma aplicação, sem dúvida alguma a criação de ../imagens dinamicamente é um recurso dos mais poderosos, já que gráficos e figuras viabilizam a informação de forma mais direta e amigável.

As aplicações são inúmeras

  • Gráficos estatísticos gerados a partir de informações armazenadas em bancos de dados
  • Gráficos estatísticos para monitorar o acesso a sites, ou o tráfego de uma rede
  • Gráficos de pesquisas on-line
  • Contadores
  • Edição de ../imagens (inserir um texto fornecido pelo usuário em uma imagem, ou sobrepor duas imagens, por exemplo)
Como funciona a geração de ../imagens dinamicamente?

Basicamente, os parâmetros para a criação das novas ../imagens são passados às funções que criarão arquivos de imagem (geralmente no formato GIF ou PNG). O PHP por si próprio possui apenas algumas funções que retornam o tamanho das ../imagens. Para manipular e criar imagens é necessário obter a biblioteca GD (GD library) disponível no pacote mod.html-gd-3.0.12-1cl (Conectiva Linux 4.0) ou em www.boutell.com/gd.

Para os que instalaram o pacote rpm, basta incluir a linha extension=gd.so no arquivo.html.ini. Para os que adquiriram a biblioteca, será necessário recompilar o PHP com suporte para GD, que é uma biblioteca gráfica. Ela permite escrever programas que criam ../imagens completas contendo linhas, arcos, textos, cores múltiplas e preenchimento de cor.

O resultado pode ser gravado como um arquivo GIF ou PNG, que são formatos de ../imagens aceitos pela grande maioria dos browsers. Neste artigo veremos dois exemplos:

  • O primeiro (grafico1.html e grafico2.php3) cria uma imagem contendo uma linha, um retângulo, uma elipse e um texto a partir das coordenadas e propriedades pedidas ao usuário.
  • O segundo (vendas.html e grafvendas.php3) cria um gráfico do tipo pizza, a partir de um suposto relatório de vendas por determinado vendedor.
Exemplo 1: grafico1.html: Formulário que recebe os valores das propriedades dos objetos.Veja figura 1.

Grafico2.html: cria a imagem e a página onde ela será mostrada. Veja figura 2.

Podemos resumir o processo para se criar uma nova imagem em etapas:

  1. Criar uma nova imagem
    $imagem=ImageCreate($largura, $altura);
  2. Definir as cores a partir da combinação dos canais RGB:
    ImageColorAllocate($imagem, $R, $G, $B);
    Exemplo:
    R G B Cor
    255 255 255 Branco
    0 0 0 Preto
    255 0 0 Vermelho
    0 255 0 Verde
    0 0 255 Azul
    Os valores variam entre 0 e 255.

    Pode-se definir as cores individualmente ou fazer diversas chamadas a esta função, alterando seus parâmetros da forma desejada, para se construir uma paleta. Isso será mostrado na figura 1.

  3. Desenhar os objetos:
    • linha: ImageLine($imagem, $x1, $y1, $x2, $y2, $cor);
    • retângulo: ImageRectangle($imagem, $x1, $y1, $largura, $altura, $cor);
    • arco/elipse: ImageArc($imagem, $x1, $y1, $largura, $altura, $ang_inicio, $ang_fim, $cor);
    • texto: ImageString($imagem, $fonte, $x1, $y1, $texto, $cor);
  4. Definir um nome para a imagem:
    ImageGif ($imagem, "../imagens/teste.gif");

    Neste momento a imagem é gravada em disco. Note que o usuário deve ter permissão para escrita pelo Apache (geralmente nobody ou httpd) no diretório onde a imagem será gravada.

  5. Liberar memória ocupada pela imagem:
    ImageDestroy($imagem);

    Para este exemplo, teríamos uma página semelhante à mostrada na figura 2.

Exemplo 2: vendas.html e grafvendas.php3. Relatório estatístico de vendas por vendedor

No exemplo 2 criamos uma pequena biblioteca com sete funções (funcoesgraficos.html). Nessa biblioteca estão contidas as funções responsáveis pela criação do gráfico pizza.

A chamada a essa biblioteca está em grafvendas.html:

 require ("funcoesgraficos.php3");

As informações sobre as vendas de cada vendedor estão armazenadas no vetor $vend_valor e os nomes de cada vendedor estão no vetor $vend_nome.

Ainda são passados para a função o título do gráfico, o período do relatório e o nome do arquivo a ser criado:

graficopizza("Grafico de Vendas/Vendedor", $vend_nome, $vend_valor, $arquivo, "$data1 - $data2");

A função se encarrega de receber os valores, somá-los e criar as fatias proporcionais das vendas de cada vendedor, preenchidas com cores diferentes, criando uma legenda para cada fatia (veja figuras 3 e 4)


Para saber mais:
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
 

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com