0

Criando Barras 3D usando PHP e GD

criado por Paulo Vinícius Vitto Ruthes em 04/06/2001 1:37am
<p><br>
5) Fun&ccedil;&otilde;es &uacute;teis:</p>
<p>Essas fun&ccedil;&atilde;o foi escrita por mim e serve para montar
barras 3D ilimitadas. Por&eacute;m sem cores, simplesmente barras
transparentes. Depois disso, montar as cores na barra &eacute; f&aacute;cil
:)</p>
<p class="mysql">&lt;?php<br>
function desenhaBarra3D($valor)<br>
{<br>
&nbsp;&nbsp;global $ult_y, $preto, $imagem;<br>
&nbsp;&nbsp;if ($ult_y == &quot;&quot;) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;$ult_y = 5;<br>
&nbsp;&nbsp;}</p>
<p class="mysql"> &nbsp;&nbsp;ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$cor_b);<br>
&nbsp;&nbsp;// Ajuste para seu modo de preencher cores<br>
&nbsp;&nbsp;/*<br>
&nbsp;&nbsp;ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
&nbsp;&nbsp;ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
&nbsp;&nbsp;ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
&nbsp;&nbsp;*/<br>
</p>
<p class="mysql"> &nbsp;&nbsp;$ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
&nbsp;&nbsp;$qnt = (int) (($valor * 200) / 100 );<br>
&nbsp;&nbsp;return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
&nbsp;&nbsp;for ($i = 0; $i &lt; sizeof($valores); $i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;desenhaBarra3D($valores[$i]);<br>
&nbsp;&nbsp;}<br>
}<br>
?&gt; </p>
<p>A fun&ccedil;&atilde;o desenhaBarra3D() j&aacute; diz por si pr&oacute;pria,
a chamadaBarras() existe apenas para desenhar cada barra, e a fun&ccedil;&atilde;o
cV(), serve para calcular qual a porcentagem do valor passado em
rela&ccedil;&atilde;o ao tamanho m&aacute;ximo das barras, e usa
uma regra de tr&ecirc;s simples.</p>
<p>Eis um exemplo de URL para escrever quatro barras e o c&oacute;digo
fonte do script abaixo...</p>
<p>http://localhost/barras.php?val[]=67&amp;val[]=33</p>
<p>C&oacute;digo fonte do script barras.php:<br>
<span class="mysql">&lt;?php<br>
header(&quot;Content-type: image/png&quot;);<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>
&nbsp;&nbsp;global $ult_y, $preto, $imagem;<br>
&nbsp;&nbsp;if ($ult_y == &quot;&quot;) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;$ult_y = 5;<br>
&nbsp;&nbsp;}</p>
<p class="mysql"> &nbsp;&nbsp;ImageRectangle($imagem, 0, $ult_y, cV($valor),
$ult_y+10, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor), $ult_y, cV($valor)+5,
$ult_y+5, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor), $ult_y+10, cV($valor)+5,
$ult_y+15, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, cV($valor)+5, $ult_y+5, cV($valor)+5,
$ult_y+15, $preto);<br>
&nbsp;&nbsp;ImageLine($imagem, 1, $ult_y+15, cV($valor)+5, $ult_y+15,
$preto);<br>
&nbsp;&nbsp;// Ajuste para seu modo de preencher cores<br>
&nbsp;&nbsp;/*<br>
&nbsp;&nbsp;ImageFill($imagem, 2, $ult_y+2, $cor_f);<br>
&nbsp;&nbsp;ImageFill($imagem, cV($valor)+1, $ult_y+12, $cor_f2);<br>
&nbsp;&nbsp;ImageFill($imagem, cV($valor)+4, $ult_y+12, $cor_f2);<br>
&nbsp;&nbsp;*/<br>
</p>
<p class="mysql"> &nbsp;&nbsp;$ult_y += 20;<br>
}</p>
<p class="mysql">function cV($valor)<br>
{<br>
&nbsp;&nbsp;$qnt = (int) (($valor * 200) / 100 );<br>
&nbsp;&nbsp;return $qnt;<br>
}</p>
<p class="mysql">function chamadaBarras($valores)<br>
{<br>
&nbsp;&nbsp;for ($i = 0; $i &lt; sizeof($valores); $i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;desenhaBarra3D($valores[$i]);<br>
&nbsp;&nbsp;}<br>
}</p>
<p class="mysql"> // o X da quest&atilde;o<br>
chamadaBarras($val);<br>
ImagePNG($imagem);<br>
ImageDestroy($imagem);<br>
?&gt;</p>
<p>Pronto... agora tome como base isso e mande bala em seus scripts
que necessitam de gr&aacute;ficos.</p>
<p>Abra&ccedil;os,<br>
Paulo Vin&iacute;cius Ruthes</p>
<p>&nbsp;</p>

Comentários:

Mostrando 1 - 4 de 4 comentários
Queria representar valores e meses ex: jan 300, fevereiro 400, como faço?
11/08/2006 7:00am (~18 anos atrás)

Ciro Grau disse:
Até pode estar instalado, mas no PHP.INI deve tirar o ";"
;extension=php_gd2.dll
extension=php_gd2.dll

12/11/2004 7:14pm (~20 anos atrás)

cara, o gd nao ta instalado ai, por isso aparece essa mensagem
15/11/2003 4:29pm (~21 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
20/12/2002 9:14am (~22 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)