Foros del Web » Programando para Internet » PHP »

Generar imagen segun resolucion

Estas en el tema de Generar imagen segun resolucion en el foro de PHP en Foros del Web. Amigos.... Una aplicacion que esty terminando requiere un arcoiris de fondo, el cual se ha hecho en fdifeentes tamaños y se accesa el archivo segun ...
  #1 (permalink)  
Antiguo 06/02/2006, 06:12
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Generar imagen segun resolucion

Amigos....

Una aplicacion que esty terminando requiere un arcoiris de fondo, el cual se ha hecho en fdifeentes tamaños y se accesa el archivo segun resolucion....

Ahora bien, estos archivos son bastantes pesados, mas si están siendo visualizados a través de una conexion del tipo dial-up.

Mi consulta es realmente como pasar dicha resolucion a un script php que genere la imagen a traves de las librerias GD, he estado tratando con Javascript, pero no se realmente como se integra el valor con las variables de ancho y alto a pasar en la creacion de la imagen, o sea, como integrar javascript con PHP

Alguien ha hecho algo parecido ?

Saludos y Gracias.

Frank
  #2 (permalink)  
Antiguo 06/02/2006, 07:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
pos tendrías que hacerlo en dos pasos (léase páginas o redirecciones), en uno obtenés la resolución y en el otro generás la imagen, y luego guardás el dato (si es necesario generar de nuevo la imagen) en una variable de sesión, quizás.


Saludos
  #3 (permalink)  
Antiguo 06/02/2006, 07:26
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias por tu respuesta.... pero

Como pasaria los valores del Width y heigth a las variables de PHP ? es alli donde estoy trancado

Saludos

Frank
  #4 (permalink)  
Antiguo 06/02/2006, 07:41
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Otra cosa.....

Una forma de hacer es a través de una deteccion de la resolucion, con esta seleccionar la Hoja de Estilo (CSS) y en cada CSS segun resolucion colocar un llamado a cada programa que genera el background dependiendo de la misma resolucion... pero con esto lo que estoy creando son varios programas.... eso es lo que quisiera evitar.....

Saludos

Frank
  #5 (permalink)  
Antiguo 06/02/2006, 07:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 398
Antigüedad: 20 años, 7 meses
Puntos: 0
$width=imagesx($ruta_img);
$height=imagesy($ruta_img);

Creo que es esto lo que buscas
Saludos
  #6 (permalink)  
Antiguo 06/02/2006, 07:51
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias.....

Pero no es la funcion, esas funciones están definidas para buscar el tamaño de una imagen existente, lo que deseo es que se pasen los parametros de la resolucion de la pantalla desde javascript a PHP, y con estos valores generar la imagen de fondo..... prefiero que esta sea generada por el servidor que cargar una imagen con el fondo completo

gracias nuevamente

Frank
  #7 (permalink)  
Antiguo 06/02/2006, 08:17
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
no es necesario generar varios programas, basta con crear 1 que trabaje con parámetros de ancho y alto.

Por otra parte, deberías ver las funciones de imágenes de php:
www.php.net/image

para tener una perspectiva completa de las capacidades de php.


Saludos.
  #8 (permalink)  
Antiguo 06/02/2006, 10:10
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo

Amigos, ante todos gracias por la cortesia de contestar, pero el caso en concreto, no es precisamente utilizar las librerias GD para validar, conocer o generar un contenido, la inquietud es como insertar dentro del código de generacion de imagenes, las variable de la resolucion de la pantalla del cliente, es por ello que insisto en Javascript, pues con ellas obtengo la resolucion del cliente, y en funcion de esta asigno el ancho y alto de la imagen a generar.

Por lo pronto lo maneje, para solucionar esto, a traves de las CSS definiendo diversas CSS segun la resolucion del cliente, y llamando a un script dependiendo de la resolucion, sin embargo quisiera contar con la forma de hacer esto directamente desde el script PHP para probar la respuesta desde la sentencia <body> directamente a ver si se ejecuta mas rapido, que la espera de la carga del CSS.

Muchas gracias a todos...

Saludos

Frank
  #9 (permalink)  
Antiguo 06/02/2006, 10:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En PHP no puedes obtener la resolución que use tu usuario en su navegador. Si la sabes obtener ya en Javscript .. lo que debes hacer es "llegar" esa información a tu script PHP para seguir con tu resto de proceso.

Para eso vía javscript, algún formulario .. con frames ocultos, Ajax ... u otras técnicas tendrás que hacer llegar esa información del lado del cliente al servidor (a tu script PHP).

Un saludo,
  #10 (permalink)  
Antiguo 07/02/2006, 06:28
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias por responder CLuster.....

Por lo pronto como lo mencione lo maneje con Javascript ( deteccion de resolucion y seleccion de CSS ), ahora bien, actualmente lo que me inquieta es que la aplicacion tiene el mismo fondo en todas las páginas.... cual seria la via expedita de que al menos el background no sea "refrescado" al navegar por los scripts ?

Otra cosa que coloque ( Con Javascript ) es el mensaje de "cargando" a los efectos de "contener" la inquietud del cliente

Un Saludo y Gracias

Frank
  #11 (permalink)  
Antiguo 07/02/2006, 07:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
cual seria la via expedita de que al menos el background no sea "refrescado" al navegar por los scripts ?
No entendí eso .. Sólo te recuerdo que PHP es un lenguaje del lado del servidor y que lo que haces -siempre- que pides un script a tu servidor HTTP es generar una "página" completa nueva cara al cliente.

Con PHP podrías generar esos CSS para darle el "background" que corresponda según el script que ejecutas .. Recuerda una vez más que con PHP "generas" esa salida: ese HTML, esos CSS .. así que siempre podrás generar todo eso de forma "dinámica" con PHP ..

Ejemplo:
Código PHP:
<?
$fondo
="http://www.nose.com/nose.jpg";
?>
<html>
<head>
<style type="text/css">
<!--
p {     background-image: url(<? echo $fondo ?>);
     background-repeat: repeat-x; 

-->
</style>

</head>
<body>
</body>
</html>
Un saludo,
  #12 (permalink)  
Antiguo 07/02/2006, 08:11
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Gracias por responder....

Dejame aclarar la inquietud.....

Al entrar al index.php con javascript busco la resolucion y lo envio a leer una CSS segun la resolucion.... cada CSS llama a un PHP (diferente) que genera la imagen a traves de las librerias GD ( como mencione al principio una especie de arcoiris con funciones de limites de colores loaritmicas ), pero siempre tarda algo en generarse.... en virtud de esto le inclui un script en javascript para que manejara el "cargando".... pero es aquimi inquietud... Existe una forma de "mantener" el fondo sin tener que recargarlo cuando el usuario navega a traves de las opciones de las paginas ?.

Saludos cordiales...

Frank
  #13 (permalink)  
Antiguo 07/02/2006, 08:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por gonzalezmfrank
Gracias por responder....

Dejame aclarar la inquietud.....

Al entrar al index.php con javascript busco la resolucion y lo envio a leer una CSS segun la resolucion.... cada CSS llama a un PHP (diferente) que genera la imagen a traves de las librerias GD ( como mencione al principio una especie de arcoiris con funciones de limites de colores loaritmicas ), pero siempre tarda algo en generarse.... en virtud de esto le inclui un script en javascript para que manejara el "cargando".... pero es aquimi inquietud... Existe una forma de "mantener" el fondo sin tener que recargarlo cuando el usuario navega a traves de las opciones de las paginas ?.

Saludos cordiales...

Frank
Pero .. ¿esa imagen que generas dinámicamente con GD .. es siempre la misma (o el mismo grupo de imagenes)? .. te hago el comentario por qué si es así .. genera la imagen sólo cuando cambie esta .. no siempre que la pidas (con tus scritps PHP actuales).

Por otro lado .. no sé que nombre de imagen le das al generarla con GD .. pero en principio los navegadores (salvo que le digas lo contrario con cabeceras HTTP) "cachéan" las páginas e imagenes que le envias.

Un saludo,
  #14 (permalink)  
Antiguo 07/02/2006, 10:14
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Amigo...

En cuanto a la imagen realmente es similar en el sentido de que, aun cuando se perciba igual, tiene cietos cambios en cuanto a la resolucion ( cuestiones matematicas ), ahora bien, en realidad no genero un archivo sino que llamo a la ejecucion del script desde el CSS. Te muestro un ejemplo corto, para 1024 de ancho

Código PHP:
<?php
header
('Content-type: image/png');
$alto 1024;
$ancho 1024;

$im imagecreatetruecolor($ancho,$alto);

$azul imagecolorallocate($im,25,149,247);
imagefill($im,0,0,$azul);

for (
$i $i $ancho $i ++){
  
  
$altoamarillo log1p($i)*115// el valor 115 y 135 hay que cambiarlo segun la resolucion 
  
$altoverde = (log($i)*135); // para que mueran las curvas mas o menos a la misma altura
  
imageline($im$i,0,$i,$ancho-$altoverde,imagecolorallocate($im,32,121,31) );
  
imageline($im$i$ancho-$altoverde$i$ancho-$altoamarillo,  imagecolorallocate($im,248,233,6) );
  
}

imagepng ($im);
imagedestroy($im);
?>
y lo llamo desde

Código PHP:
body{
    
font-family"Arial Unicode MS""Comic Sans MS";
    
line-heightnormal;
    
margin0px;
    
padding0px;
    
background-color#1895f6;
    
background-image:  url('pmbg1024.php');
    
background-repeatno-repeat;

El asunto es que realmente segun tu comentario es, ....... como controlo eso de no recargarla ?
Cita:
Pero .. ¿esa imagen que generas dinámicamente con GD .. es siempre la misma (o el mismo grupo de imagenes)? .. te hago el comentario por qué si es así .. genera la imagen sólo cuando cambie esta .. no siempre que la pidas (con tus scritps PHP actuales).
Es alli que tengo la inquietud,... por cuanto en los enlaces pudiesen tener enlaces y quizas activar algun control de imagenes enrede el asunto

Saludos y Gracias

Frank
  #15 (permalink)  
Antiguo 07/02/2006, 10:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Efectivamente como ahí indicas en tu ejemplo .. el código lo generas dinámicamente y en consecuencia esa imagen.

Que tantos gráficos podrías generar como opciones? .. Lo que pretendo llegar es a que realmente si ves que el n° de visitas de tus páginas .. el proceso PHP que generas tus recursos del servidor no te dán o ralentizan mucho el proceso, .. a que generes esas imagenes "fijas" y las usas como actualmente llamas a tu proceso PHP con GD para generarlas "al vuelo".

A veces hay que poner en la mesa la "realidad" o asumir ciertas falencias, tomando algún promedio, como por ejemplo en cuanto a las "resoluciones" que los usuarios o público que pueda usar esa aplicación usará. De hecho con estadísticas de visitas de tu sitio ya podrías ver esas tendencias y al menos cubrir esas opciones.

--------------------------------------------------------------

Por el tema de hacer el código más "dinámico" que se pueda reusar .. si tus "variables" son dos: alto/ancho .. que vía javascript obtienes .. pasaselos a ese script Por el URL ..:


background-image: url('pmbg.php?alto='+alto+'%ancho='+ancho);

alto y ancho sería variables de javascript que por otro médio definiras (consulta en el foro de Javascript para más detalles al respecto si no te aclaras con eso).

En tu script PHP .. (ahora sólo uno ..) tomaría esas dos variabels del URL:

Código PHP:
<?php 
header
('Content-type: image/png'); 
$alto $_GET['alto']; 
$ancho $_GET['ancho'];

No sé si es esto lo que realmente preguntabas .. pero sea como sea es una opción para otimizar tu código y no tener así un montón de scripts PHP que hacen casi lo mismo .. y otro montón de código javascript para generar o llamar a ese CSS concreto que a su vez llama a tu script PHP que genera la imagen. Esto por supuesto no optimizará el tiempo de proceso en sí de PHP + GD .. sólo tu código a nivel de entendimiento.

Un saludo,
  #16 (permalink)  
Antiguo 07/02/2006, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Otro comentario más al respecto ..

Si te preocupa recargar las imagenes y demás .. Podrías probar a usar derechamente las técnicas de "Ajax" .. no sé si las conoces o has odido hablar de ellas (en forosdelweb.com tenemos un foro para tal fin).

Revisa el tema "Ajax" .. por qué con esas técnicas puedes hacer llamadas a cierto contenido de tu página .. sin recargar la página completa .. Tal vez eso te intrese para tu caso.

Un saludo,
  #17 (permalink)  
Antiguo 07/02/2006, 11:02
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Ok..... gracias por tu comentarios.... voy a verificar en Javascript y en Ajax a ver que consigo

Un Millon

Frank
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 17:00.