Criando Barras 3D usando PHP e GD
<p><br>
3.1.1) ImageRectangle(str imagem, int x_1, int y_1, int x_2, int
y_2, cor):</p>
<p>Essa função desenha em imagem um retângulo
da cor começando em (x_1, y_1) e terminando
em (x_2, y_2).<br>
- ImageRectanlgle($imagem, 0, 0, 349, 149, $preto);</p>
<p>3.1.1.2) A função ImageRectanlge tem uma variante
chamada ImageFilledRectangle, a qual funciona da mesma maneira,
exceto pelo fato que esta preenche o retêngulo com a mesma
cor das bordas.</p>
<p>3.1.2) ImageLine(str imagem, int x_1, int y_1, int x_2, int
y_2, cor):</p>
<p>Essa função desenha uma linha comum em imagem
com a cor começando em (x_1, y_1)<br>
e terminando em (x_2, y_2).<br>
- ImageLine($imagem, 2, 2, 10, 10, $preto);</p>
<p>3.1.3) ImageString(str imagem, int tamanho, int x, int y, cor,
str string):</p>
<p>Essa função escreve a string em imagem
no tamanho com a cor em (x, y).</p>
<p>3.1.3.2) A função ImageString utilizará uma
fonte built-in caso nenhuma fonte seja carregada pela
função ImageLoadFont. Não explicarei esta função
já que as fontes utilizadas como padrão já
são perfeitas para esses caso.</p>
<p>3.1.3.3) Existe ainda a função ImageTTFText, que
trabalha com fontes True Type, mas como para isso você deve
ter compilado o PHP com opção de Fontes TTF e juntamente
nesse carro o GD deixaremos de lado.</p>
<p>4) Agora sim, a base da montagem de uma barra:</p>
<p>Agora que você já tem todas as funções
necessárias para montagem de uma barra vamos ao trabalho,
sendo esse explicado no script.</p>
<p class="mysql"><?php<br>
header("Content-Type: image/png");<br>
$imagem = ImageCreate(350, 150);</p>
<p class="mysql">$branco = ImageColorAllocate($imagem, 255, 255, 255);<br>
$preto = ImageColorAllocate($imagem, 0, 0, 0);</p>
<p class="mysql"> // cor nova<br>
$vermelho = ImageColorAllocate($imagem, 255, 0, 0);<br>
// variante da vermelha (efeito de iluminação)<br>
$vermelho_2 = ImageColorAllocate($imagem, 255, 0, 0);</p>
<p class="mysql"> // cor de fundo da imagem<br>
ImageFill($imagem, 1, 1, $branco);<br>
// repare que este retângulo formará uma borda na imagem<br>
ImageRectangle($imagem, 0, 0, 349, 149, $preto);</p>
<p class="mysql">/*<br>
Esta parte mostra como montar apenas UMA barra somente para estudo<br>
Para entender basta pensar em como a gente desenha um cubo no papel
sem régua nem nada:<br>
Primeiro se desenha um quadrado, e um parecido um pouco acima e
ao lado do primeiro como se estivessem sobrepostos, e liga-se os
vértices de cada quadrado com outro do outro quadrado, e
pronto temos um cubo. Este é o princípio da barra
"3D".<br>
*/</p>
<p class="mysql"> // desenha o retângulo base<br>
ImageRectangle($imagem, 0, 20, 50, 30, $preto);<br>
// desenha a primeira linha do topo da barra<br>
ImageLine($imagem, 50, 20, 55, 35, $preto);<br>
// desenha a segunda linha do topo da barra<br>
ImageLine($imagem, 50, 30, 55, 35, $preto);<br>
// desenha a terceira linha do topo da barra - Até aqui você
tem uma barra e um<br>
// quadrilátero <br>
ImageLine($imagem, 55, 25, 55, 35, $preto);<br>
// desenha a linha da ponta do quadrilátero até o
coméco terminando o contorno // da barra<br>
ImageLine($imagem, 1, 35, 55, 35, $cor_b);<br>
// preenche o primeiro retângulo <br>
ImageFill($imagem, 2, 22, $vermelho);<br>
// preenche o quadrilátero no topo da barra<br>
ImageFill($imagem, 51, 32, $vermelho_2);<br>
// preenche o quadrilátero abaixo da barra<br>
ImageFill($imagem, 54, 32, $vermelho_2);</p>
<p class="mysql">ImagePNG($imagem);<br>
ImageDestroy($imagem);<br>
?></p>
<p>Muito bem, se você consegui uma barra "3D" na sua
imagem você fez tudo certo, e pronto você conseguiu
uma barra 3D, mas... e se você tivesse que montar a partir
de um dado desconhecido?<br>
</p>
<p> </p>
3.1.1) ImageRectangle(str imagem, int x_1, int y_1, int x_2, int
y_2, cor):</p>
<p>Essa função desenha em imagem um retângulo
da cor começando em (x_1, y_1) e terminando
em (x_2, y_2).<br>
- ImageRectanlgle($imagem, 0, 0, 349, 149, $preto);</p>
<p>3.1.1.2) A função ImageRectanlge tem uma variante
chamada ImageFilledRectangle, a qual funciona da mesma maneira,
exceto pelo fato que esta preenche o retêngulo com a mesma
cor das bordas.</p>
<p>3.1.2) ImageLine(str imagem, int x_1, int y_1, int x_2, int
y_2, cor):</p>
<p>Essa função desenha uma linha comum em imagem
com a cor começando em (x_1, y_1)<br>
e terminando em (x_2, y_2).<br>
- ImageLine($imagem, 2, 2, 10, 10, $preto);</p>
<p>3.1.3) ImageString(str imagem, int tamanho, int x, int y, cor,
str string):</p>
<p>Essa função escreve a string em imagem
no tamanho com a cor em (x, y).</p>
<p>3.1.3.2) A função ImageString utilizará uma
fonte built-in caso nenhuma fonte seja carregada pela
função ImageLoadFont. Não explicarei esta função
já que as fontes utilizadas como padrão já
são perfeitas para esses caso.</p>
<p>3.1.3.3) Existe ainda a função ImageTTFText, que
trabalha com fontes True Type, mas como para isso você deve
ter compilado o PHP com opção de Fontes TTF e juntamente
nesse carro o GD deixaremos de lado.</p>
<p>4) Agora sim, a base da montagem de uma barra:</p>
<p>Agora que você já tem todas as funções
necessárias para montagem de uma barra vamos ao trabalho,
sendo esse explicado no script.</p>
<p class="mysql"><?php<br>
header("Content-Type: image/png");<br>
$imagem = ImageCreate(350, 150);</p>
<p class="mysql">$branco = ImageColorAllocate($imagem, 255, 255, 255);<br>
$preto = ImageColorAllocate($imagem, 0, 0, 0);</p>
<p class="mysql"> // cor nova<br>
$vermelho = ImageColorAllocate($imagem, 255, 0, 0);<br>
// variante da vermelha (efeito de iluminação)<br>
$vermelho_2 = ImageColorAllocate($imagem, 255, 0, 0);</p>
<p class="mysql"> // cor de fundo da imagem<br>
ImageFill($imagem, 1, 1, $branco);<br>
// repare que este retângulo formará uma borda na imagem<br>
ImageRectangle($imagem, 0, 0, 349, 149, $preto);</p>
<p class="mysql">/*<br>
Esta parte mostra como montar apenas UMA barra somente para estudo<br>
Para entender basta pensar em como a gente desenha um cubo no papel
sem régua nem nada:<br>
Primeiro se desenha um quadrado, e um parecido um pouco acima e
ao lado do primeiro como se estivessem sobrepostos, e liga-se os
vértices de cada quadrado com outro do outro quadrado, e
pronto temos um cubo. Este é o princípio da barra
"3D".<br>
*/</p>
<p class="mysql"> // desenha o retângulo base<br>
ImageRectangle($imagem, 0, 20, 50, 30, $preto);<br>
// desenha a primeira linha do topo da barra<br>
ImageLine($imagem, 50, 20, 55, 35, $preto);<br>
// desenha a segunda linha do topo da barra<br>
ImageLine($imagem, 50, 30, 55, 35, $preto);<br>
// desenha a terceira linha do topo da barra - Até aqui você
tem uma barra e um<br>
// quadrilátero <br>
ImageLine($imagem, 55, 25, 55, 35, $preto);<br>
// desenha a linha da ponta do quadrilátero até o
coméco terminando o contorno // da barra<br>
ImageLine($imagem, 1, 35, 55, 35, $cor_b);<br>
// preenche o primeiro retângulo <br>
ImageFill($imagem, 2, 22, $vermelho);<br>
// preenche o quadrilátero no topo da barra<br>
ImageFill($imagem, 51, 32, $vermelho_2);<br>
// preenche o quadrilátero abaixo da barra<br>
ImageFill($imagem, 54, 32, $vermelho_2);</p>
<p class="mysql">ImagePNG($imagem);<br>
ImageDestroy($imagem);<br>
?></p>
<p>Muito bem, se você consegui uma barra "3D" na sua
imagem você fez tudo certo, e pronto você conseguiu
uma barra 3D, mas... e se você tivesse que montar a partir
de um dado desconhecido?<br>
</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)