Foros del Web » Programando para Internet » Javascript »

Pase de imágenes indicando directorio, no archivos ¿cómo?

Estas en el tema de Pase de imágenes indicando directorio, no archivos ¿cómo? en el foro de Javascript en Foros del Web. Hola de nuevo. Tengo un script y el código html (que comparto abajo) para realizar una presentación de imágenes con efecto giro, teniendo que indicarle ...
  #1 (permalink)  
Antiguo 02/03/2008, 08:40
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 16 años, 10 meses
Puntos: 539
Pase de imágenes indicando directorio, no archivos ¿cómo?

Hola de nuevo.
Tengo un script y el código html (que comparto abajo) para realizar una presentación de imágenes con efecto giro, teniendo que indicarle cada imagen que quiero que aparezca: imag001, imag002...etc
Funciona correctamente.
Mi consulta es la siguiente:
como hacer en el código html para evitar tener que indicarle uno a uno los archivos y que realice la presentación con solo indicarle la carpeta (directorio) que contiene las imágenes, sabiendo que tienen un nombre de archivo similar: imagXXX.jpg, donde las XXX son dígitos y son las que cambian.
La intención es mostrar las miniaturas que genera una galería de imágenes de forma automática, sin tener que incluir manualmente las nuevas.
Desde ya, gracias por la ayuda.

Código:
<script type='text/javascript'>

/***********************************************
* Carousel Slideshow II- By Harry Armadillo (http://www.codingforums.com/showthread.php?t=58814)
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
* Please keep this notice intact
***********************************************/

function carousel(params){
  if(!(params.width>0 && isFinite(params.width)))params.width=100;
  if(!(params.height>0 && isFinite(params.height)))params.height=100;
  if(!(params.sides>2 && isFinite(params.sides)))params.sides=4;
  if(!(params.steps>0 && params.steps<100 && isFinite(params.steps)))params.steps=20;
  if(!(params.speed>0 && isFinite(params.speed)))params.speed=8;
  if(!(params.image_border_width>=0 && isFinite(params.image_border_width)))params.image_border_width=0;
  if(isFinite(params.id)||!params.id)params.id='bad_id_given_'+Math.random();
  
  document.write("<div style='position:relative;overflow:hidden;' id='"+params.id.replace(/[^a-zA-Z0-9]+/g,'_')+"'></div>");
  var cdiv=document.getElementById(params.id.replace(/[^a-zA-Z0-9]+/g,'_'))
  cdiv.style.width=params.width+'px';
  cdiv.style.height=params.height+'px';
  cdiv.style.border=params.border;
  cdiv.style.position='relative';
  cdiv.style.overflow='hidden';
  cdiv.title=params.id;
    
  var counter=0,spinning=true,interval=Math.floor(60000/params.sides/params.steps/params.speed)-5;
  interval=isNaN(interval)?200:interval;
  var img_position=[],images=[],img_dimension=[];
  var img_index=params.images.length+1,img_index_cap=2*params.images.length;
  var faces=Math.ceil(params.sides/2), dimension, direction, targ, attr, faraway;

  function init(){
    if(params.direction=="left" || params.direction=="right"){
      direction=params.direction;
      dimension="width";
      }
    else if(params.direction=="top" || params.direction=="bottom"){
      direction=params.direction;
      dimension="height";
      }
    else {
      direction="left";
      dimension="width";
      }      
    faraway=(direction=="left"||direction=="top")?'-20000px':'20000px';
    cdiv.style[dimension]=params[dimension]/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)+'px';
    var img=new Image();
    img.style.position='absolute';
    img.style[direction]=faraway;
    img.style.width=params.width-2*params.image_border_width+'px';
    img.style.height=params.height-2*params.image_border_width+'px';
    img.style.border=(params.image_border_width||0)+'px solid '+params.image_border_color;
  
    for(var i=0;i<params.images.length;i++){
      images[i]=img.cloneNode(true);
      images[i].src=params.images[i];
      if(params.links && params.links[i] && params.links[i]!=''){
        targ=params.lnk_targets && params.lnk_targets[i]||params.lnk_base||'new';
        if(targ=="_blank"){
          attr=(params.lnk_attr && params.lnk_attr[i])?",'"+params.lnk_attr[i]+"'":"";
          images[i].onclick=new Function("window.open('"+params.links[i]+"','"+targ+"'"+attr+")");
          }
        else if(targ.substr(0,1)=="_"){
          images[i].onclick=new Function(targ.substr(1)+".location='"+params.links[i]+"'");
          }
        else{
          attr=(params.lnk_attr && params.lnk_attr[i])?",'"+params.lnk_attr[i]+"'":"";
          images[i].onclick=new Function("var t='"+targ+"';if(window[t]){try{window[t].close()}catch(z){}}window[t]=window.open('"+params.links[i]+"',t"+attr+");window[t].focus()");
          }
        images[i].style.cursor=document.all?'hand':'pointer';
        }

      if(params.titles && params.titles[i] && params.titles[i]!='')
        images[i].title=params.titles[i];
      if(document.all)
        images[i].alt=images[i].title;
      images[i+params.images.length]=images[i];
      if(params.images.length==faces)
        images[i+2*params.images.length]=images[i];
      cdiv.appendChild(images[i]);
      }
  
    var face_size=params.size_mode=='image'?params[dimension]:params[dimension]*Math.sin(Math.PI/params.sides);
    var face_offset=params[dimension]*Math.cos(Math.PI/params.sides)/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)/2-.5;
    var pi_piece=2*Math.PI/params.steps/params.sides;
    for(i=0;i<=params.steps*faces;i++){
      img_dimension[i]=face_size*Math.sin(pi_piece*i);
      img_position[i]=(i<params.steps*params.sides/2)?Math.floor(params[dimension]/2/(params.size_mode=='image'?Math.sin(Math.PI/params.sides):1)-face_offset*Math.cos(pi_piece*i)-img_dimension[i]/2)+'px':faraway;
      img_dimension[i]=img_dimension[i]-2*params.image_border_width>1?Math.ceil(img_dimension[i])-2*params.image_border_width+'px':'1px';
      }
    }
  init();

  cdiv.rotate = function(){
    setTimeout('document.getElementById("'+cdiv.id+'").rotate()',interval);
    if(!spinning) return;
    if(++counter>=params.steps){
      counter=0;
      if(++img_index>=img_index_cap)
        img_index=params.images.length;
      }
    images[img_index-faces].style[direction]=faraway;
    for(var i=faces-1;i>=0;i--){
      images[img_index-i].style[direction]=img_position[counter+i*params.steps];
      images[img_index-i].style[dimension]=img_dimension[counter+i*params.steps];
      }
    }
  cdiv.onmouseover=function(){
    spinning=false;
    }
  cdiv.onmouseout=function(){
    spinning=true;
    }
  setTimeout('document.getElementById("'+cdiv.id+'").rotate()',100);
  }
</script>
Y este el html para la presentación en el navegador:
Código:
<body> 
<script type='text/javascript'>
carousel({id:'mini-galería',
          border:'',
          size_mode:'image',
          width:120,
          height:90,
          sides:6,
          steps:9,
          speed:9,
          direction:'right',
          images:['image001.jpg',
                  'image002.jpg',
                  'image003.jpg',
                  'image004.jpg',
                  ],
          image_border_width:'',
          image_border_color:''
          });
</script> 
</body>
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
  #2 (permalink)  
Antiguo 02/03/2008, 08:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Pase de imágenes indicando directorio, no archivos ¿cómo?

Hola:

Con javascript no se pueden leer carpetas... y al ser del servidor, tal vez puedas usar un lenguaje de tu server para generar ese array... con php es bastante fácil, pero sin lenguaje del servidor puedes olvidarte.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 02/03/2008, 09:02
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 16 años, 10 meses
Puntos: 539
Re: Pase de imágenes indicando directorio, no archivos ¿cómo?

Gracias Caricatos.
En mi ignorancia se me olvidó mencionar que el directorio que contiene las imágenes lo controlo yo, esto es, está dentro del htdocs: "../htdocs/mi_sitio/carpeta_con_imagenes_a_mostrar".
Y excepto los parámetros que marcan como se realiza la presentación, creo que el resto se podría cambiar por código php (supongo, que mi desconocimiento va a la par que mi osadía.
Eston son los que definen cómo:
Código:
border:'',
          size_mode:'image',
          width:120,
          height:90,
          sides:6,
          steps:9,
          speed:9,
          direction:'right'
Una vez más, gracias por el interés.
EDITADO:
Volviendo sobre la respuesta de Caricatos:
Cita:
..con php es bastante fácil...
quizás fuese conveniente que algún moderador trasladase esta consulta a PHP si lo considera conveniente.
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++

Última edición por kseso?; 02/03/2008 a las 10:04 Razón: Conveniencia de trasla
  #4 (permalink)  
Antiguo 02/03/2008, 16:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Pase de imágenes indicando directorio, no archivos ¿cómo?

Hola:

Pues en php sería algo así:

Código:
<?
$d = dir("../imagenes");
$imagenes = array();
while($entry=$d->read()) {
	if (!is_dir($d->path.'/'.$entry)) {
		$elemento = $d->path.'/'.$entry;
		if (is_file($elemento)) {
			$img = GetImageSize($elemento, $info);
			if (isset($img))
				$imagenes[count($imagenes)] = $elemento;
		}
	}
}
$d->close();
?>
Esto crea un array con las urls de imágenes... solo te faltaría usar el método explode para mostrarlo...

De todos modos ahora voy a reportar el mensaje.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 03/03/2008, 06:50
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 16 años, 10 meses
Puntos: 539
Re: Pase de imágenes indicando directorio, no archivos ¿cómo?

Gracias de nuevo, Caricatos, y disculpa por el retraso.
Al final añado los nombres de los archivos manualmente, pues retardaría la carga de la página si tiene que leer más de 200 imágenes, aunque pequeñas (120x90 px).
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
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 08:00.