hola amigos nesecito una rutina para gareria de fotografias
si alguno me duede ayuda
muchas grasias
| ||||
Hola berja2001: Ya he visto que Bravenap (Hola ) te dió un tironcito de orejas por tus prisas (se me adelantó)... Fijate en la página de mi perfil, donde hay una galería de caricaturas, o en esta otra: www.sucaricatura.com/2003 que es una futura acualización, y si te sirve avisa para indicarte como implementarla. Saludos |
| ||||
Hola otra vez: Perdona berja2001: por no ponerte código... Voy a poner unas líneas muyu básicas: Código PHP: Tanto maxis como minis son arrays de las fotos y de las miniaturas que uses. Espero que te sirva Saludos |
| ||||
Hola a todos! He hecho, con ayuda del magnífico SCRIPT de ajuste de ventana a imagen de tunait una sencilla galería de imágenes. No está tan terminada como me gustaría, pero creo que te servirá. Por supuesto es mejorable y aceptaré gustoso cualquier sugerencia. He intentado hacerla lo más fácil de manejar posible y para ello me he valido de las típicas variables con las que configurar los parámetros (número de filas y columnas, forzado de tamaño de la imagen mini...) y de constructores para generar el código. En caso de tener cualquier duda al respecto por favor pregunta. Código PHP:
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. Última edición por KarlanKas; 01/07/2003 a las 01:16 |
| ||||
Hola a todos: KarlanKas (Hola ): Ya que planteas que te demos sugerencias, te diré una cosa que me ha pasado con una de mis galerías, y la forma de solucionarlo (al menos, como lo hice)... He visto que usas innerHTML para incrustar la galería en la página... si bien la mayoría de los navegadores lo soportan, la versión 6.05 de opera no lo hace bien, entonces tenía mi galería normal, pero a la vez puse un link del tipo "pulse aquí si no se muestra la galería..." (o algo parecido), y desviaba la página a una que funcionaba con document.write(...) Entonces, la sugerencia es en vez de usar innerHTML, usar directamente document.write en el sitio donde deba ir la galería... Otra cosa que se me ocurre es que, según veo, haces una precarga de las imagenes, que creo innecesaria (new Image) sobre todo con las imágenes grandes, ya que de una galería, raras veces se amplían todas las fotos, y pienso que todavía debe haber mucha gente con conexiones lentas... Como verás, son sugerencias que no cambian la funcionalidad de la galería, pero en mi opinión, mejorarían algo la versión final. Saludos |
| ||||
Tienes razón caricatos (). Tal vez deba usar un ilayer (no me gusta tener que hacerlo) en vez de un innerHTML. Document.write directamente no puedo usarlo porque perdería el valor de la foto por la que voy (creo que debería empezar a usar cookies). También tienes razón con respecto a la precarga de imágenes. Voy a ver que hago... Gracias por tus sugerencias!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Hola otra vez: Espero que a berja2001 le sirva de algo esto... No entiendo por qué perderás el valor de la foto, pero te voy a plantear como lo hago yo, y dime si te sirve. En lugar de la linea (en la galería que propones)... document.getElementById('tabla').innerHTML=codigo; pongo... return codigo; y luego en la etiqueta que llamas tabla pongo otro tag script escribo el código... <div id="tabla"> <script language=javascript> document.write(montarTabla()) </script> </div> Me parece que las variables y demás que se declaran en el head siguen valiendo. Ahora tengo que dejarlo, pero esta tarde lo miraré mejor. Saludetes |
| ||||
Vamos a ver... si uso el document.write al montar la página todo sale a pedir de boca, pero date cuenta de que hay veces que habrá más fotos de las qeu pueda mostrarse en una tacada, por lo que habrá que pincharse sobre siguiente. Si hago lo que propones: 1.- En cuanto haga una segunda vez el document.write perderé todo el contenido de la página salvo lo que escriba ahí. 2.- perderé el valor de la variable foto que es el puntero que señala la última imagen mostrada. No creo que sea viable. Es mejor o recargar la página pasando el valor de foto o utilizar cookies o utilizar iframes. El problema está en que hay varias pantallas de fotos.
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Hola otra vez: Si es una galería de una sola página, con write debería ser suficiente... siempre que se use al cargarse la página... Pensaba que se trataba de una galería básica con unas cuantas fotos. Te diré la forma que he usado hasta hace unos pocos días, y como lo hago ahora... Ciertamente he usado innerHTML, y en los browser que lo aceptaban iba muy bien, pero para los que no lo aceptaba, hice una página por cada una de las ídem de la galería... La principal usando innerHTML y las restantes con write y enlazando con los métodos tradicionales. Actualmente (hace pocos días cambié la galería), paso valores por línea de comando (formulario con método get), y en el head resuelvo la página de galería, y en el body solo muestro la galería que corresponde... ... Ya sabes donde ver la página... Lo de usar cookies, es otra opción válida, pero sabes que pueden estar inactivas. Hace poco tunait (hola ) puso en un mensaje un sistema que usaba el método de las cookies, y de forma alternativa (estando inactivas) trabajaba con algo parecido al método get. Si te interesa, busco el mensaje para que lo veas. Saludos |
| ||||
No te preocupes... hace poco hice una página que se llamaba a si misma pasando datos por medio de get (en realidad construia ella misma la sintaxis... lo haré así a ver que tal...
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Siguiendo los consejos de caricatos (hola campeón!) he hecho una galería que no emplea el innerHTML... al no tener donde probarla no sé si va bien... os pido que lo comprobeis... creo que va bien, pero ya se sabe. Cita: Ahí va!ES IMPORTANTE QUE LA PÁGINA SE LLAME galeria.html PARA QUE FUNCIONE!! Código PHP:
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. Última edición por KarlanKas; 01/07/2003 a las 01:20 |
| ||||
Por cierto, se me olvidaba avisar que aunque el código esté entre la leyenda "PHP" es Javascript, por lo que si se quiere importar en un editor de páginas web no hay más que copiarlo y pegarlo en la pestaña HTML. Las instrucciones de manejo son bien sencillas: en fotosPorFila hay que poner cuantas fotos quieres por linea (en horizontal). En fotosPorColumna debes poner cuantas fotos quieres por columna (en vertical). En forzarAncho dices el ancho que quieres que tengan todas las imágenes pequeñas de la galería. Si quieres que tengan su tamaño original pon 0 (cero). Si fuerzas el tamaño tal vez la imagen pequeña pierda calidad. En forzarAlto indicas el alto que quieres que tengan todas las imágenes pequeñas de la galería. Si quieres que tengan su tamaño original pon 0 (cero). Si fuerzas el tamaño tal vez la imagen pequeña pierda calidad. Y ahora para poner las imágenes que quieras cambia los: "imagen[0]=new nueva('1b.jpg','1.jpg','foto Añaer');" por tus imágenes teniendo en cuenta que: para poner tus fotos debes poner siempre: imagen[el numero que corresponda de forma correlativa y empezando por el cero]=new nueva(ruta de la imagen pequeña entre comillas,ruta de la imagen grande tb entre comillas, título de la foto (esto es opcional)); Lo que está en negrita no lo puedes cambiar y debes asegurarte que todo queda en una línea. Es decir: imagen[n]=new nueva(<imagen pequeña>,<imagen grande>,[titulo]); Quino, si tienes cualquier problema no dudes en preguntar!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Hola KarlanKas: Lo he probado en netscape 7 y opera 7 (supongo que en explorer lo habrás probado tú y va bien) Lo que me ha pasado es que lo probé en una carpeta donde ya tenía mi galeria.html, y le hice un arreglillo para que funcionara en cualquier página... Donde pone: location.href="galeria.html?foto="+foto+"&vamosAtr as="+vamosAtras; puse: location.href=location.href.split("?")[0] + "?foto="+foto+"&vamosAtras="+vamosAtras; Supongo que habrá más formas de obtener el mismo resultado, pero puse lo primero que se me ocurrió ... y ahora el informe: En Netscape 7 va bien, pero los popups salen con barra de scroll vertical... y las miniaturas salen con su tamaño original En Opera 7 no redimensiona... Para forzar las dimensiones en Netscape he probado quitarle el espacio que hay al final de estas dos líneas: anadir+=(forzarAncho)?" width:"+forzarAncho+" px;":""; anadir+=(forzarAlto)?" height:"+forzarAlto+" px;":""; ... " px;" => "px;" y de esta manera funciona bien. Saludos |
| ||||
Oye! Qué buena idea lo del split para sacar el location.href! Ahora mismo pongo los cambios. Parece que por fín vamos a hacer una galería! Participa tunait(hola leporcia!), participas tú, participa un alienígena... quien quiera puede participar más, eh? Lo del espacio lo sabía... y tuve cuidado de ponerlo... al principio. Tal vez al hacer mil cambios se me pasó eso... Y lo de los pop ups... he debido cambiar algo sin querer porque el script de tunait funciona a las mil maravillas. Voy a ver si cambiando un par de cosas funciona lo de las miniaturas... Muchas gracias por tu informe caricatos ! [/font]
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
A ver si ahora...
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Galería de Imágenes</title> <style> A{font:normal 10px/10px verdana; color:blue; text-decoration:none; } input{font:normal 10px/10px verdana} </style> <script> var ventana var cont=0 imagen=new Array; primera=false; function nueva(peque,grande,nombre){ this.peque=new Image; this.grande=new Image; if(!nombre){this.titulo=false} else{this.titulo=nombre} this.peque.src=peque this.grande.src=grande; } //----------------- VARIABLES EDITABLES --------------------------- var tituloGaleria="Galería de imágenes"//Título por defecto de la galería var titulopordefecto = "Galería de imágenes" //texto por defecto // a mostrar en la barra de título de la pop up en caso de omitir el argumento titulo var fotosPorFila=3; var fotosPorColumna=3; var forzarAncho=80;//Pon el ancho al que quieres forzar las //imágenes en miniatura. Si pones 0 no forzará nada var forzarAlto=80;//Pon el alto al que quieres forzar las imágenes //en miniatura. Si pones 0 no forzará nada // ----------------------------------------------------------------------------- // | Pon todas las imágenes que quieras | // | Sintaxis: | // | imagen[n]=new nueva(<imagen pequeña>,<imagen grande>,[titulo]); | // ----------------------------------------------------------------------------- imagen[0]=new nueva('1b.jpg','1.gif','foto Añaer'); imagen[1]=new nueva('2b.jpg','2.jpg','Ya sabía yoo...'); imagen[2]=new nueva('3b.jpg','3.jpg','Con faldas y a lo loco'); imagen[3]=new nueva('4b.jpg','4.jpg'); imagen[4]=new nueva('1b.jpg','1.jpg','foto rara'); imagen[5]=new nueva('2b.jpg','2.jpg'); imagen[6]=new nueva('3b.jpg','3.jpg','los amigos'); imagen[7]=new nueva('4b.jpg','4.jpg'); imagen[8]=new nueva('1b.jpg','1.jpg','foto rara'); imagen[9]=new nueva('2b.jpg','2.jpg'); imagen[10]=new nueva('3b.jpg','3.jpg','los amigos'); imagen[11]=new nueva('4b.jpg','4.jpg'); //------------- NO EDITES A PARTIR DE AQUÍ SI NO SABES LO QUE HACES ----------------- //script por Tunait //Modificado un poquiiiito por KarlanKas function afoto(cual){ titulo=imagen[cual].titulo; cual=imagen[cual].grande.src; if(cont==1){ventana.close();ventana=null} if(titulo==null){titulo=titulopordefecto} ventana=window.open('','ventana','resizable=yes,scrollbars=no') ventana.document.write('<html><head><title>'); ventana.document.write(titulo + '</title></head>'); ventana.document.write('<body style="overflow:hidden"'); ventana.document.write('marginwidth="0" marginheight="0"'); ventana.document.write('topmargin="0" bottommargin="0"'); ventana.document.write('leftmargin="0" rightmargin="0"'); ventana.document.write('scroll="no" onUnload="opener.cont=0">'); ventana.document.write('<img onError="self.close()" src="' + cual + '" alt="'+titulo+'" ') ventana.document.write('onLoad="opener.redimensionar(this.width, this.height)">') if(ventana&&!ventana.closed){ventana.document.close()} cont++ } function redimensionar(ancho,alto) { ventana.resizeTo(ancho+11,alto+30) ventana.moveTo((screen.width-ancho)/2,(screen.height-alto)/2) //centra la ventana. //Eliminar si no se quiere centrar el popup } </script> <script> // Resto de KarlanKas para forosdelweb.com var codigo="" var tituloPuesto="" anadir=" style='" anadir+=(forzarAncho)?" width:"+forzarAncho+"px;":""; anadir+=(forzarAlto)?" height:"+forzarAlto+"px;":""; anadir+="' " anadir2=" " anadir2+=(forzarAncho)?" width="+forzarAncho:""; anadir2+=(forzarAlto)?" height="+forzarAlto:""; foto=-1; function montarTabla(vamosAtras){ if(!vamosAtras){vamosAtras=false} if(primera){ location.href=location.href.split("?")[0] + "?foto="+foto+"&vamosAtras="+vamosAtras; } else{primera=true; URL=location.href; interrogacion=URL.indexOf("?"); if(interrogacion!=-1){ datos=URL.substring(interrogacion,URL.length); partes=datos.split("&"); foto=partes[0].substring(6,partes[0].length); foto=parseInt(foto) vamosAtras=partes[1].substring(11,partes[1].length); } if(vamosAtras=="true"){foto-=(2*fotosPorFila*fotosPorColumna)} if (foto<(imagen.length)){ codigo="<center><table>" for (fila=0;fila<fotosPorFila;fila++){ codigo+="<tr>" for (columna=0;columna<fotosPorColumna;columna++){ foto+=1; if(foto<imagen.length){ if(!imagen[foto].titulo){ imagen[foto].titulo="Imagen "+(1+foto) } } codigo+="<td valign='top'"; codigo+="align='center'"; codigo+="style='width:"+(forzarAncho+5)+" px;height:"+(forzarAlto+30)+" px;overflow:auto'>"; if (imagen[foto]){ codigo+="<A HREF='javascript:afoto("+foto+")'"; codigo+="onFocus='this.blur()'>"; codigo+="<img border=0 src='"+imagen[foto].peque.src+"'"+anadir+anadir2+">"; codigo+="<br>"+imagen[foto].titulo+"<br><br></A>"; } codigo+="</td>";} codigo+="</tr>"; } habilitadoAtras=(foto==((fotosPorFila*fotosPorColumna)-1))?"disabled":"" habilitadoAlante=((foto+1)>=imagen.length)?"disabled":"" codigo+="</table>"; codigo+="<br>"; codigo+="<input type='button' " codigo+=habilitadoAtras+" value='< Anteriores' onClick='montarTabla(true)'>"; codigo+="<input type='button' " codigo+=habilitadoAlante+" value='Siguientes >' onClick='montarTabla()'></center>"; } return codigo; }} </script> </head> <body><center><h1><script>document.write(tituloGaleria)</script></h1></center> <div id="tabla"><script>document.write(montarTabla())</script></div> </body> </html>
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Bien: Las miniaturas ya están bien, pero sigue apareciendo la barra de scroll. y opera no redimensiona. (Lo de opera no sé si tendrá arreglo) Intenté alguna modificación para evitar la barra y lo que más se acercó a la solución fué redimensionar 2 veces... ... La primera con los valores normales y la segunda calculando la diferencia entre el ancho que quedó en el body y el ancho que debía ser: var nuevoAncho = ventana.document.body.clientWidth; ... y resizeTo(ancho + (nuevoAncho - ancho), alto... De esta forma, la altura quedó bien, pero se desajustó la anchura. Seguiré investigando, y si averiguo algo, te aviso. Saludos |
| ||||
Es extraño... a mi en Netscape 7.0 me va bien... no aparece ninguna barra... tunaiiiittt!!!! Qué se te ocurre??
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Hola KarlanKas: Yo también uso la versión 7, y volví a copiar el código que pusiste para ver si me había equivocado en algo, pero sigue saliendo la barra... Tal vez sea por usar otros tamaños . Subí la página para que la chequees, y me digas si te aparecen a ti. La dirección es ésta: www.sucaricatura.com\_Famosos\temp.html Te advierto que son caricaturas. Saludos |
| ||||
fíjate si tu ns7 al abrir la popup tiene arriba una barra de herramientas plegada (se ve una pequeña flechita arriba a la izquierda). Teniendo un overflow:hidden no debiera haber problema en ns7, salvo por la propia configuración del navegador. pero parece que con esa barra pone scroll automáticamente y se carga el area de visualización. Si te muestra esa flechita en la ventana, cierrala verás como entonces va bien |
| ||||
A mí también me sale la barra de desplazamiento, pero aumenté un poco el tamaño de la ventana y desapareció. ¿Por qué no probáis, en lugar de 11 y 30 pixels, a sumar 15 y 35 por ejemplo? Un saludo.
__________________ ¡¡NO A LA GUERRA!! Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares! |
| ||||
Doy por resuelto el problema. Y, por tanto, finalizada la fase de desarrollo inicial... es decir, estaríamos en la versión 1.0. Voy a volver a poner los pixels que tenía tunait porque con la modificación se ve un borde blanco... Un saludo! Opss! Bravenap... no creo que sea esa la solución... a mi me sale bien! no entiendo cual puede ser el fallo. He probado la página de caricatos (por cierto, muy graciosas las caricaturas) y va bien, sin barras ni nada... si ponemos lo que dices el marco blanco va a ser enorme y va a quedar feo! Podríamos poner
Código:
if(navigator.owner=="caricatos"|| navigator.owner=="Bravenap"){ pixelsAAnadirX+=5; pixelsAAnadirY+=5; }
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. Última edición por KarlanKas; 01/07/2003 a las 05:24 |
| ||||
Hola tunait: Son cosas curiosas... No sabía lo de la barra, pero no es eso. Subí una captura que hice y se puede ver que no está esa barra/pestaña. Puedes verlo aquí: http://www.sucaricatura.com/_Famosos/captura.jpg No sé que tendré configurado mal, o tal vez se trate una una versión de netscape con algún fallo. Si me entero de las razones, las haré saber. Saludos |
| ||||
No será la versión del SO... me da que WinXP tiene la barra de título más alta uqe el resto de los windows... caricatos ¿podrías hacer una pruqeba? puedes poner como configuración de ventanas la clasica de windows y probar el script? me da qeu va a ser eso. Al final voy a tener que hacer lo que he dicho en broma.
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Me alegra compartir condicional con caricatos
__________________ ¡¡NO A LA GUERRA!! Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares! |
| ||||
Puede ser también que tienes aplicado un tema que no es el predeterminado en Netscape. Fíjate en mi captura de pantalla. Tengo el aspecto (tema) predeterminado de netscape. Por lo que veo el interfaz de tu NS tiene más grosor en la barra de título que le resta el espacio a la imagen y pone entonces la barra de scroll. Ahora, lo vergonzoso es que a pesar del overflow hidden la ponga |