Foros del Web » Programando para Internet » Javascript »

Background-image Adaptable a la pantalla

Estas en el tema de Background-image Adaptable a la pantalla en el foro de Javascript en Foros del Web. Buenas chicos, Muchos de nosotros hemos pensado alguna vez: "joder, me encantaría poner este background con fixed y estirado para que ocupe toda la pantalla". ...
  #1 (permalink)  
Antiguo 07/02/2009, 18:41
 
Fecha de Ingreso: marzo-2007
Mensajes: 32
Antigüedad: 17 años, 1 mes
Puntos: 0
Background-image Adaptable a la pantalla

Buenas chicos,

Muchos de nosotros hemos pensado alguna vez: "joder, me encantaría poner este background con fixed y estirado para que ocupe toda la pantalla".

Pues bien, gracias a AJAX, las librerias GD y un par de cosillas de CSS y JavaScript básicas, creé esta noche un script capaz de redimensionar la imagen de mi background-image para el body.

Lo hice de la siguiente manera:
1. Imprimo en pantalla la imagen a redimensionar en un DIV y con IMG, al 100%, con un position: absolute y un z-index: -1
Esto lo hago para poder tener la imagen detrás del body al 100%, y poder así coger las dimensiones que ocupa ésta en pantalla, para luego poder redimensionarla con las librerias GD en el PHP.

2. Cargo un fichero javascript donde inicializo las llamadas onload y onresize a mi función de llamada AJAX.

3. La función AJAX recoje en primer lugar el width y height de la imagen contenida en el DIV, imaginando que las dimensiones son 1012x758, por ejemplo, genero el nombre para mi nueva imagen como: img_1012x758.jpg

4. El PHP redimensiona mi imagen a un nuevo fichero, denominado img_1012x758.jpg y retorna dicho nombre con un echo para el javascript.

5. Cuando vuelve a mi javascript, la funcion REQUEST establece como imagen para el background del body esta nueva imagen.

Bueno, este método no me lo he inventado yo, alguna vez he visto gente que sugería algo así, pero nunca vi de nadie que hubiese puesto código o lo hubiese implementado.

El método es rápido (unos 2segundos o así en poner la imagen), y es limpio (mientras la imagen no está redimensionada para background del body puedo dejar el DIV con la imagen al 100%

Problemas

Aquí viene la parte interesante: los problemas que aún detecto, y son los siguientes, o principalmente uno:
El problema es el número de imágenes que vamos a crear... se supone que admitimos width y height, aún restringiendo a que lo mínimo fuese 200x200 y lo máximo 1500x1500, por ejemplo, y suponiendo que nuestra imagen pudiese ocupar 100KB de media... son (si mis cálculos no fallan) 1300 x 1300 x 100KB = 169GB demasiado para una chorrada como ésta.

Soluciones:

Se me ocurrieron a priori varias soluciones, pero por ahora no he dado con la óptima.
Una de las que probé fue una vez establecida la imagen de background, eliminar dicha imagen con unlink, pero increiblemente.... si hago eso, deja de funcionar el fixed del background, la verdad, no sabía que el navegador recargase la imagen cuando bajábamos con el scroll, creía que la guardaba en la caché.



En fin, qué soluciones se os ocurren a vosotros?

Por supuesto que postearé el código en cuanto lo tenga más ordenado por si alguien le interesa.

Saludos y gracias!!!
  #2 (permalink)  
Antiguo 08/02/2009, 02:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Background-image Adaptable a la pantalla

Hola:

La solución es bastante sencilla, no tienes que crear un fichero por cada imagen, sino crear un fichero php que reciba como parámetros las dimensiones a redimencionar y la imagen, y en ese caso no haría falta javascript... por ejemplo, se resumiría en esto:

window.onload = function() {
ancho = document.body.offsetWidth;
alto = document.body.offsetHeight;
document.body.style.background = "url(redimensionar.php?imagen=fondo.jpg&anchur a=" + ancho + "&altura=" + alto + ) no-repeat center center";
}

Te dejo la parte php que supongo (por lo que has puesto) que no tendrás problema en implementarlo.

Puedes tener como referencia el código que puse en esta página: Gradientes (php + librerías GD)
... pinchando en finalizar te muestra el código que se usa y además te permite bajar las fuentes.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 08/02/2009, 06:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 32
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Background-image Adaptable a la pantalla

Buenas caricatos,

Muchas gracias por tu respuesta y por tu ayuda.

Lo cierto es que me compliqué demasiado la vida sin pensar que se pudiese hacer tal y como indicas, ya lo he probado y funciona a la perfección, incluso es unas milésimas más rápido al no tener que escribir en el disco.

SIn embargo, sigo necesitando de imprimir la imagen en un DIV al 100% para poder coger correctamente el width y el height visibles en mi navegador, ya que:
document.body.offsetWidth
document.body.offsetHeight

me devuelven el total del navegador que tengo ocupado (contando con la parte que no se ve oculta por el scroll), por ejemplo 1220 y 1400 me podría devolver ahora mismo, cuando yo necesitaría obtener 1220 y 594.

Lo de tomar el valor de la imagen me funciona, pero se os ocurre otra forma más limpia?

Muchas gracias!
  #4 (permalink)  
Antiguo 08/02/2009, 07:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Background-image Adaptable a la pantalla

Hola:

Cuando puse que no hacía falta javascript, me refería a Ajax, y por eso muevo el tema a javascript. Lo de document.body era solo orientativo, pero si lo que hay que cambiar es un div, debes cambiar document.body por document.getElementById("el_div")... ya sabes, con el id que tenga... de todos modos, parece que esa parte ya la controlabas, así que no lo he depurado mucho... Lo de el beneficio en tiempo, debes añadirle el beneficio de evitar "basura" en el server, y de la consulta ajax que te ahorras... pero eso ya lo sabrás evaluar tú mismo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 08/02/2009, 12:21
 
Fecha de Ingreso: marzo-2007
Mensajes: 32
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Background-image Adaptable a la pantalla

Buenas caricatos, toda la razón, esto ya es sólo Javascript con el script en PHP.

Muchas gracias por tu ayuda, me funciona a la perfección.

Saludos!!!
  #6 (permalink)  
Antiguo 08/02/2009, 13:36
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Background-image Adaptable a la pantalla

Hola ,esto no es javascript, es solo CSS, se que funciona en Internet explorer. No hay codigo que ejecutar, la carga es mas rapida, y no se nesesitan divs ni nada, solo una imagen.

Cita:
Iniciado por CSS
html{overflow:hidden;}
body{width:100%;height:100%;overflow:auto;color:wh ite;margin:0;}
#fondo{position:absolute;top:0px;left:0px;width:10 0%;height:100%;border:0;z-index:-1}

El color del body depende de la imagen:

Cita:
Iniciado por HTML
<img id="fondo" src="cosmos.gif">
pruebalo.
  #7 (permalink)  
Antiguo 03/06/2009, 10:43
Avatar de Mafesa83  
Fecha de Ingreso: marzo-2007
Ubicación: Villahermosa, Tabasco
Mensajes: 43
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Background-image Adaptable a la pantalla

Excelente tio. gracias por esa respuesta tan concreta, saludos Programeitor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.