Criando Barras 3D usando PHP e GD
<p><br>
5) Funções úteis:</p>
<p>Essas função foi escrita por mim e serve para montar
barras 3D ilimitadas. Porém sem cores, simplesmente barras
transparentes. Depois disso, montar as cores na barra é fácil
:)</p>
<p class="mysql"><?php<br>
function desenhaBarra3D($valor)<br>
{<br>
global $ult_y, $preto, $imagem;<br>
if ($ult_y == "") {<br>
$ult_y = 5;<br>
}</p>
<p class="mysql"> ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$cor_b);<br>
// Ajuste para seu modo de preencher cores<br>
/*<br>
ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
*/<br>
</p>
<p class="mysql"> $ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
$qnt = (int) (($valor * 200) / 100 );<br>
return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
for ($i = 0; $i < sizeof($valores); $i++) {<br>
desenhaBarra3D($valores[$i]);<br>
}<br>
}<br>
?> </p>
<p>A função desenhaBarra3D() já diz por si própria,
a chamadaBarras() existe apenas para desenhar cada barra, e a função
cV(), serve para calcular qual a porcentagem do valor passado em
relação ao tamanho máximo das barras, e usa
uma regra de três simples.</p>
<p>Eis um exemplo de URL para escrever quatro barras e o código
fonte do script abaixo...</p>
<p>http://localhost/barras.php?val[]=67&val[]=33</p>
<p>Código fonte do script barras.php:<br>
<span class="mysql"><?php<br>
header("Content-type: image/png");<br>
$imagem = ImageCreate(350, 150);</span></p>
<p class="mysql">$branco = ImageColorAllocate($imagem, 255, 255, 255);<br>
$preto = ImageColorAllocate($imagem, 0, 0, 0);</p>
<p class="mysql">ImageFill($imagem, 1, 1, $branco); <br>
ImageRectangle($imagem, 0, 0, 349, 149, $preto);</p>
<p class="mysql">function desenhaBarra3D($valor)<br>
{<br>
global $ult_y, $preto, $imagem;<br>
if ($ult_y == "") {<br>
$ult_y = 5;<br>
}</p>
<p class="mysql"> ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$preto);<br>
// Ajuste para seu modo de preencher cores<br>
/*<br>
ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
*/<br>
</p>
<p class="mysql"> $ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
$qnt = (int) (($valor * 200) / 100 );<br>
return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
for ($i = 0; $i < sizeof($valores); $i++) {<br>
desenhaBarra3D($valores[$i]);<br>
}<br>
}</p>
<p class="mysql"> // o X da questão<br>
chamadaBarras($val);<br>
ImagePNG($imagem);<br>
ImageDestroy($imagem);<br>
?></p>
<p>Pronto... agora tome como base isso e mande bala em seus scripts
que necessitam de gráficos.</p>
<p>Abraços,<br>
Paulo Vinícius Ruthes</p>
<p> </p>
5) Funções úteis:</p>
<p>Essas função foi escrita por mim e serve para montar
barras 3D ilimitadas. Porém sem cores, simplesmente barras
transparentes. Depois disso, montar as cores na barra é fácil
:)</p>
<p class="mysql"><?php<br>
function desenhaBarra3D($valor)<br>
{<br>
global $ult_y, $preto, $imagem;<br>
if ($ult_y == "") {<br>
$ult_y = 5;<br>
}</p>
<p class="mysql"> ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$cor_b);<br>
// Ajuste para seu modo de preencher cores<br>
/*<br>
ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
*/<br>
</p>
<p class="mysql"> $ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
$qnt = (int) (($valor * 200) / 100 );<br>
return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
for ($i = 0; $i < sizeof($valores); $i++) {<br>
desenhaBarra3D($valores[$i]);<br>
}<br>
}<br>
?> </p>
<p>A função desenhaBarra3D() já diz por si própria,
a chamadaBarras() existe apenas para desenhar cada barra, e a função
cV(), serve para calcular qual a porcentagem do valor passado em
relação ao tamanho máximo das barras, e usa
uma regra de três simples.</p>
<p>Eis um exemplo de URL para escrever quatro barras e o código
fonte do script abaixo...</p>
<p>http://localhost/barras.php?val[]=67&val[]=33</p>
<p>Código fonte do script barras.php:<br>
<span class="mysql"><?php<br>
header("Content-type: image/png");<br>
$imagem = ImageCreate(350, 150);</span></p>
<p class="mysql">$branco = ImageColorAllocate($imagem, 255, 255, 255);<br>
$preto = ImageColorAllocate($imagem, 0, 0, 0);</p>
<p class="mysql">ImageFill($imagem, 1, 1, $branco); <br>
ImageRectangle($imagem, 0, 0, 349, 149, $preto);</p>
<p class="mysql">function desenhaBarra3D($valor)<br>
{<br>
global $ult_y, $preto, $imagem;<br>
if ($ult_y == "") {<br>
$ult_y = 5;<br>
}</p>
<p class="mysql"> ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$preto);<br>
// Ajuste para seu modo de preencher cores<br>
/*<br>
ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
*/<br>
</p>
<p class="mysql"> $ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
$qnt = (int) (($valor * 200) / 100 );<br>
return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
for ($i = 0; $i < sizeof($valores); $i++) {<br>
desenhaBarra3D($valores[$i]);<br>
}<br>
}</p>
<p class="mysql"> // o X da questão<br>
chamadaBarras($val);<br>
ImagePNG($imagem);<br>
ImageDestroy($imagem);<br>
?></p>
<p>Pronto... agora tome como base isso e mande bala em seus scripts
que necessitam de gráficos.</p>
<p>Abraços,<br>
Paulo Vinícius Ruthes</p>
<p> </p>
Queria representar valores e meses ex: jan 300, fevereiro 400, como faço?
11/08/2006 7:00am
(~18 anos atrás)
Até pode estar instalado, mas no PHP.INI deve tirar o ";"
;extension=php_gd2.dll
extension=php_gd2.dll
;extension=php_gd2.dll
extension=php_gd2.dll
12/11/2004 7:14pm
(~20 anos atrás)
não consegui fazer rodar o exemplo que está na primeira página do artigo, dá o seguinte erro.....o que pode ser?
<br>
Fatal error: Call to undefined function: imagecreate() in /home/httpd/dominios/naveg.com.br/restrito/image.php on line 5<br>
a biblioteca libgd-1.7.3-2cl está instalada no meu servidor.....
VALEU
MAURICIO
<br>
Fatal error: Call to undefined function: imagecreate() in /home/httpd/dominios/naveg.com.br/restrito/image.php on line 5<br>
a biblioteca libgd-1.7.3-2cl está instalada no meu servidor.....
VALEU
MAURICIO
20/12/2002 9:14am
(~22 anos atrás)