Amigos, como verán, con un sencillo script de mi factoria (que he reciclado para diversos usos) puede mostrarse, cada vez que alguien mira un post nuestro, un avatar diferente (de una cantidad previamente definida)
Elementos necesarios:
a) Una carpeta en un hosting que soporte PHP -con 200/300kb de espacio en disco es suficiente-
b) Imágenes en formato JPG que cumplan con las reglas (un máximo de 100*100 px y 20kb), cantidad a gusto
Preparación:
1) Seleccionamos todas las imágenes que usaremos como avatares, se las renombra con la forma 1.jpg -n.jpg (es MUY importante que la extensión .jpg se encuentre en minúculas como explicó luego)
2) Creamos una carpeta en el hosting con el nombre que se quiera (en el ejemplo /avatar/)
3) Subimos las imágenes ya preparadas a esa carpeta
4) Dentro de la misma creamos un archivo con formato PHP que contenga lo siguiente (en este ejemplo el
archivo se llama avatar.php) (lo contenido entre /* */ puede eliminarse) reemplazando la cantidad de imágenes en "$totales = n"
<?php
/*
Selector de imagenes aleatorias hecho por Camello.Ar 2005/2008
Uso:
http://servidor/carpeta/avatar.php
TOTALES: Cantidad de imagenes
Nombre de imagenes:
1.jpg - N.jpg (Numeración correlativa del 1 hasta Totales)
Las imágenes deben ser todas jpg y por cuestiones de compatibilidad en servidores
linux y bsd la extensión deberá ser en minúsculas (.jpg) (NO .JPG por ejemplo)
*/
$totales = N //Aquí poner el total de imágenes
header("Content-type: image/jpeg");
mt_srand((double)microtime()*1000000);
$ran = mt_rand(1,$totales);
$filename = $ran.".jpg";
readfile($filename);
?>
5) Ya tenemos el generador listo, lo probamos poniendo la dirección del archvio en el navegar y recargando varias veces para ver que siempre muestre imágenes (pueden repetirse o no, pero deberían ir rotando)
6) Venimos al foro, en la barra de menu superior (fondo azul) ponemos "Editar Perfil", luego en el menu izquierdo seleccionamos "Información del Perfil del foro", marcamos la opción "tengo mi propia imagen" y al costado ponemos la dirección de la imagen. Luego guardamos y debería estar funcionado
Notas:
-La extensión de las imágenes debe estar en minúsculas dado que si el servidor usa linux (la gran mayoría) al ser sensible a mayúsculas/minúsculas produciría un error al cargar las imágenes.
-Al ser un mecanismo sencillo (orientado a la velocidad de funcionamiento y poco código) no tiene control de errores, tal como determinar la existencia de archivos.
- El código podría estar más optimizado, por ejemplo ahicando la cantidad de variables, pero tiene una finalidad de hacer un código reutilizable
- Todas las imágenes debe ser el mismo formato. Si se utilizan en uno que sea diferente a JPG (por ejemplo GIF o PNG) debe modificarse la linea que determina la extensión, cómo así la cabecera MIME
Funcionamiento técnico:
1) Carga en una variable la cantidad de imagenes disponibles
2) Envía una cabecera HTTP al navegador indicándole el tipo MIME del archivo
3) Inicia el generador de números aleátorios
4) Genera un número entero, al azar, entre 1 y la totalidad de imágenes
5) Carga en una variable el nombre de la imagen elegida, componiéndola entre el numero resultante y la extensión ".jpg"
6) Lee el archivo seleccionado y lo envía directamente al navegador
Saludos.
Gracias.. me tomo un tiempito y lo pruebo :jaja:
Salute :up:
Gracias camello!
Gracias Tocayo... Yo en otro foro tenía un sistema parecido, pero con variables de texto sobre fondos que iban cambiando. Es decir, yo hice varios fondos (eran del Counter-Strike) y un amigo me ayudó haciéndome un script en el cual además de cargar aleatoriamente las imagenes, les agregaba un texto aleatorio encima, con diferentes formatos (fuente, tamaño, color, etc.). Lamentablemente, perdí ese script y nunca mas volví a ver a mi amigo.
Cita de: KameL en Diciembre 05, 2008, 15:51:57
Gracias Tocayo... Yo en otro foro tenía un sistema parecido, pero con variables de texto sobre fondos que iban cambiando. Es decir, yo hice varios fondos (eran del Counter-Strike) y un amigo me ayudó haciéndome un script en el cual además de cargar aleatoriamente las imagenes, les agregaba un texto aleatorio encima, con diferentes formatos (fuente, tamaño, color, etc.). Lamentablemente, perdí ese script y nunca mas volví a ver a mi amigo.
Para eso se utiliza la librería GD (si mal no recuerdo) yo tenía unos scripts similares (sin aleatorio, pero es cuestión de combinarlos) para hacer una botonera para temas de sitios web. pero depende que el hosting tenga habilitadas las librerías
<?php
Header("Content-type: image/jpeg");
$string = $HTTP_GET_VARS[texto];
$imagen = $HTTP_GET_VARS[tema];
$imagen = "boton-$imagen.jpg";
$im = imagecreatefromjpeg($imagen);
$negro = ImageColorAllocate($im, 0, 0, 0);
$px = (imagesx($im)-6.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$negro);
ImageJpeg($im);
ImageDestroy($im);
?>
Eso es en resumidas cuentas lo que tengo yo
funciona en la forma
/botonera.php?tema=TEMA&texto=MENSAJE (por ejemplo /botonera.php?tema=boton-rojo&texto=Boton%20de%20muestra)
Pero las entradas string e imagen se pueden generar con la rutina anterior al azar
en mi caso lo que hacia era leer un archivo con el fondo (mis archivos eran boton-rojo.jpg, boton-azul.jpg, etc) y sobreimprimir el texto pasado como cadena. Es una prueba conceptual sobre personalización de páginas (o sea no se utilizó en ningún sitio de producción)
Hmmm... creo que estamos hablando de cosas diferentes...
A ver si me explico mejor:
Yo tenía 4 o 5 imagenes de firmas, sin texto y 4 o 5 frases.
El script lo que hacia era combinar los diferentes fondos con las diferentes frases, de forma aleatoria, quedando por ejemplo el fondo 1 con la frase 3, el fondo 1 con la frase 5, el fondo 2 con la frase 3, etc... Ojala recupere ese script que me gustaba mucho.
A mí me tira este error cuando lo pruebo, vale aclarar que uso el host gratuito de iespana que siempre te muestra su publicidad arriba... seguro ese sea el problema no?
Si el problema es el host ni en pedo hay uno que podamos usar no? :P
CitarParse error: syntax error, unexpected T_STRING in ***dirección***/avatar/avatar.php on line 3
Código usado
<?php
$totales = 8
header("Content-type: image/jpeg");
mt_srand((double)microtime()*1000000);
$ran = mt_rand(1,$totales);
$filename = $ran.".jpg";
readfile($filename);
?>Captura de las imágenes usadas
http://img210.imageshack.us/img210/3185/capturadeavatareswe1.jpg
el tema que no cerras la linea despues de totales con ;
NO:
$totales = 8
SI:
$totales = 8;
Aaaah pero qué boludo importante :-[ jajajaja
Ahí funcionó, muchas gracias capo :up:
por nada