Si lo vamos a alojar nosotros mismos necesitaremos habilitar el paquete php-gd para esto edita el php.ini, descomenta la linea de ";extension=php_gd2.dll" (quitale el ';'... en algunos casos es un '#')
En debian/ubuntu se hace con "sudo apt-get install php5-gd"
Vamos alla...
Buscamos una imagen, la imagen sera la base, conviene que sea lo mas uniforme posible para que quede bien, yo escogi esta, aun que no sea la mas apropiada
Preparamos el codigo en PHP
El siguiente codigo es el que escribira en la imagen
<?php // Escrito por Kenkeiras function navegador($ua){ // Devuelve el navegador ...bastante simple ;) $nav=""; if (strstr($ua,"Firefox")) $nav="Firefox"; elseif (strstr($ua,"MSIE 6")) $nav="IExplorer 6"; elseif (strstr($ua,"MSIE 7")) $nav="IExplorer 7"; elseif (strstr($ua,"MSIE 8")) $nav="IExplorer 8"; elseif (strstr($ua,"Opera")) $nav="Opera"; elseif (strstr($ua,"Safari")) $nav="Safari"; return $nav; } function os($ua){ // lo mismo, pero para el SO $os=""; if (strstr($ua,"Linux")) $os="Linux"; elseif (strstr($ua,"Windows")) $os="Windows"; elseif (strstr($ua,"Mac")) $os="Mac"; return $os; } $back="esfera.png"; //Imagen de fondo $img=imagecreatefrompng($back); //Se crea la imagen (desde un png) $fcolor=ImageColorAllocate($img,255,120,0); // El color de las letras ($img,r,g,b) // Ejemplo: ImageString($img,Tamaño de letra,Longitud,Altura,"Texto",$fcolor); $ip=$_SERVER['REMOTE_ADDR']; //La ip esta en la variable $_SERVER['REMOTE_ADDR'] ImageString($img,5,65,75,"IP: $ip",$fcolor); // Escribimos la IP en la imagen $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; $i=stripos($lang,";"); if ($i) $lang=substr($lang,0,$i); if ($lang!="") ImageString($img,5,50,100,"Lenguaje: $lang",$fcolor); $ua=$_SERVER['HTTP_USER_AGENT']; $os=os($ua); $nav=navegador($ua); if ($nav!="") ImageString($img,5,40,125,"Navegador: $nav",$fcolor); if ($os!="") ImageString($img,5,35,150,"Sistema Operativo: $os",$fcolor); // ---------------- Header("Content-Type: image/png"); // Avisamos que es una imagen png ImagePNG($img); // Convertimos a png //Si prefieres un JPEG cambia las dos ultimas lineas por //Header("Content-Type: image/jpeg"); //ImageJPEG($img); // ---------------- ImageDestroy($img); // Liberamos el espacio ?>
Como funciona? (Para l@s que no les guste leer los comentarios del codigo)
Se usan dos funciones (navegador y os), que buscan en la cadena del "User-Agent", alguna parte conocida (Firefox, MSIE, etc...), y que devuelven el navegador y el sistema operativo del usuario
El resto es PHP,
$back="esfera.png"; //Imagen de fondo
$img=imagecreatefrompng($back); //Se crea la imagen (desde un png)
Como indican los comentarios, la primera linea es saber donde esta la imagen base, la segunda es para importarla como PNG, tambien se puede hacer para jpg
imagecreatefromjpeg
o con gif
imagecreatefromgif
(aqui hay mas funciones parecidas: http://us3.php.net/manual-lookup.php?pattern=imageCreateFrom&lang=es)
$fcolor=ImageColorAllocate($img,255,120,0); // El color de las letras ($img,r,g,b)
Prepara el color de las letras en la imagen (recuerda que la imagen esta en $img), el color se asigna en rgb, de 0 a 255 (esta combinacion, "255,120,0", seria naranja)
$ip=$_SERVER['REMOTE_ADDR']; //La ip esta en la variable
Guarda la ip (que esta en la variable $_SERVER['REMOTE_ADDR'])
ImageString($img,5,65,75,"IP: $ip",$fcolor);
Escribe en la imagen, con tamaño de letra 5, desde el pixel 65 (horizontal) y el 75 (vertical), la cadena "IP: $ip",en el color $fcolor
El resto es hacer lo mismo con lo que nos interesa (lenguaje, navegador,etc...)
Y despues
Header("Content-Type: image/png"); // Avisamos que es una imagen png
Avisamos al navegador para que reconozca lo que viene ahora como una imagen png (si es jpg, habria que poner "image/png")
Y los dos ultimos pasos
ImagePNG($img); // Convertimos a png
ImageDestroy($img); // Liberamos el espacio
Resultado:
Suerte y hasta otra
No hay comentarios:
Publicar un comentario