sexta-feira, 27 de novembro de 2009

Imagem que exibe IP - Dinâmica criada com php.

Tudo bem galera?

Hoje vou falar de um assunto muito interessante, que é a criação de imagens com php. Para complementar o tutorial, vou ensinar a criar até mesmo aquelas imagens que exibem o IP do usuário.
Me recordo que certo dia eu havia postado na G.H (comunidade) o link de uma ótima tool para criação de banners 2.0. E meu amigo, Rodrigo Radler, me perguntou se eu sabia como eram criadas essas ferramentas; com vergonha respondi que não!

Então estava eu, hoje, na Web, procurando uma lista de variáveis globais, e sem querer me deparei com esse tipo source que trata de imagens (nada a ver com o que eu estava procurando... Só mais tarde eu associei os dois, resultando no código que retorna o número de IP - verão a seguir).
Mas afinal, qual apaixonado por WebDesign, ou mesmo apenas curioso, nunca se perguntou como são feitas essas ferramentas online que geram banners? De fato é interessante... Você coloca o nome... Clica em gerar imagem... E pronto! Agora você pode salvar no seu computador.
Eu respondo (sempre):
- Podem ser feitas em php!
Não vou dar tudo na mão, apenas irei mostrar como podemos criar uma imagem a partir de um código php. Daí pra frente concluo que você é inteligente o bastante para analisar a lógica necessária para tal criação.


Colocando a mão na massa!


Primeiramente vamos criar uma imagem GIF, como exemplo.
No código abaixo, criamos uma imagem com a palavra 'CH - cmm=44793822'.

O código:
__________________________________

<?php
header("Content-type: image/gif"); //Informa ao browser que o arquivo é uma imagem no formato GIF

$imagem = ImageCreate(150,40); //Cria uma imagem com as dimensões 100x20 - você pode modificar

$vermelho = ImageColorAllocate($imagem, 255, 0, 0); //Cria o segundo plano da imagem e o configura para vermelho
$branco = ImageColorAllocate($imagem, 255, 255, 255); //Cria a cor de primeiro plano da imagem e configura-a para branco

ImageString($imagem, 3, 3, 3, "CH - cmm=44793822", $branco); //Imprime na imagem o texto CH - cmm=44793822 na cor branca que esta na variável $branco

ImageGif($imagem); //Converte a imagem para um GIF e a envia para o browser

ImageDestroy($imagem); //Destrói a memória alocada para a construção da imagem GIF
?>





EXEMPLO:


__________________________________

Já está todo comentado, creio eu que seja o bastante para sua compreensão.
Esta imagem será exibida em seu navegador, mas poderíamos ter indicado que ela deveria ser salva em um arquivo, como no exemplo a seguir:

O código:

__________________________________

<?php
$arquivo = "imagem1.gif";

$imagem = ImageCreate(150,40);

$vermelho = ImageColorAllocate($imagem, 255, 0, 0);
$branco = ImageColorAllocate($imagem, 255, 255, 255);

ImageString($imagem, 3, 3, 3, "ConhecimentoHacker", $branco);
ImageGif($imagem, $arquivo);

ImageDestroy($imagem);

echo "A imagem foi salva no arquivo $arquivo.";
?>


EXEMPLO:
http://enviodeemail.justfree.com/php[2].php

Quando clicamos no link acima, é criada a seguinte imagem no servidor (como havíamos programado acima, ela terá o nome de imagem1.gif):


__________________________________

No exemplo acima, retiramos o comando header(), já que a imagem vai ser 'salva' e não 'lida'. Também modificamos o comando ImageGif, para que ele salve a imagem no $arquivo.



Se você tiver entendido e praticado os exercícios acima, quer dizer que já adquiriu uma noção básica do que estamos fazendo.

Agora ficamos com as questões: "como essa imagem pode retornar um IP? Uma imagem dinâmica? Como isso é possível?".
Oras, estamos trabalhando com uma linguagem dinâmica, não é mesmo? Por que não criar uma imagem dinâmica? É possível sim!


O código:
__________________________________

<?php
$img_number = imagecreate(275,25);
$backcolor = imagecolorallocate($img_number,102,102,153);
$textcolor = imagecolorallocate($img_number,255,255,255);

imagefill($img_number,0,0,$backcolor);
$number = " Seu IP é $_SERVER[REMOTE_ADDR]";//Este é o responsável pela exibição do IP

Imagestring($img_number,10,5,5,$number,$textcolor);

header("Content-type: image/jpeg");
imagejpeg($img_number);
?>


EXEMPLO:

__________________________________

Comentei o código inteiro, e creio que já tenham entendido. Só para tirar dúvidas... O IP é exibido ali, onde usamos a global '$_SERVER[REMOTE_ADDR]'. Também poderíamos exibir o host, data, hora, localização, etc. Tudo uma questão de mudar a global (eu estava justamente procurando uma lista delas :-D).

Forte abraço galera. Qualquer dúvida, sugestão ou crítica, deixem comentários.
Até a próxima matéria.

3 Pessoas comentaram:

Bem, primeiramente desejo parabenizar-te pelo artigo e principalmente pelo blog.
Fico satisfeito em ter sido mencionado em teu blog, mesmo sendo simplesmente por uma dúvida. Isto é sinal de que você é uma boa pessoa e que não esquece dos amigos.
Sempre que precisar estarei aqui, amigo!

Agradeço os elogios amigo.
Pois é, quando vi o código, logo lembrei dessa questão, e resolvi estudar mais afundo.
Você que tem conhecimento básico em php (bem como eu) poderia me ajudar na criação de uma ferramenta que gera imagens com frases personalizadas para exibirmos e estudarmos aqui no B.J. O que acha?
Tenho o projeto todo. Fica aí o convite.
A vida segue. Abraço.

Converso contigo em outro local. "Simbora pro orkut"(haha)
Email pra mim com as especificações. No aguardo

Postar um comentário

Não deixe de comentar. O seu comentário é o meu pagamento.

Compartilhar

Twitter Delicious Facebook Digg Stumbleupon Favorites