Newsgroup: it.comp.lang.javascript
Titolo: pagina con "finta webcam"

Ciao, utilizzo normalmente un sistema per far vedere una webcam una
pagina che non risiede in memoria e con un refresh di qualche secondo,
cosě d'avere un'immagine (imagecam.jpg) sempre recente.
Ora perň ho un problema di questo tipo.
Dovrei far vedere una sequenza d'immagini (numerate progressivamente)
come se fossero un "live" di una webcam.
Potete suggerirmi qualcosa di valido??
Ciao.

 Potete suggerirmi qualcosa di valido??
Se intendi 25/30fps scordatelo, non avrai mai una sequenza nitida; in tal
caso conviene montarle in un filmato.
Se invece vuoi ciclare delle immagini prova a cercare "javascript ciclare
immagini" con google.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 immagini" con google.
Nooooooo, al massimo 1 fotogramma ogni 5 secondi!!!!
Ora cerco, ma se hai qualche dritta per il mio caso.
Ti dico fin da ora, le immagini sono numerate progressivamente e
l'ultima cifra non è n+1 ma n+secondi che passano da un'immagine
all'altra, quindi n+5 o n+quanto voglio.
ciao e grazie

ho trovato questo script, ma non funziona, cosa c'è che non va??
<html>
<head>
<script language="Javascript"> 
function immagine_casuale(){ 
//Qui sotto imposti il numero delle immagini che devono ruotare: se sono
100 imposta 99 (da 0 a 99)
var Num=5; 
var data=new Date(); 
data=data.getTime()/10; 
numero=data%Num; 
//Le immagini devono chiamarsi image0, image1, ecc.
//e devono avere tutte la stessa estensione, 
//in questo caso .jpg
document.write('<img src="image' + numero +'.jpg">');   
} 
// --> 
</script>
<title>Effetti su immagini 93</title>
</head>
<body>
<script> 
immagine_casuale(); 
  </script>
</body>
</html>

 immagine_casuale(); 
Qua esegue la function e visualizza l'immagine indicata.
Per funzionare dovrebbe funzionare, poi non so bene cosa combina (vediamo:
con data.getTime() restituisce un numeraccio, /10 è sempre un numeraccio.
Poi fa un modulo (data%Num==data%5) e quindi estrae un numero pseudocasuale
tra 0 e 4. Quindi dovrebbe visualizzare l'immagine image[0-4].jpg).
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

all'altra, quindi n+5 o n+quanto voglio.
Prova qualcosa del tipo:
<html>
<head>
<script type="text/javascript">
var data=new Date(); 
var startTime=data.getTime();
var imgTime=startTime;
var mImage=null;
var imageNames="webcam"; // inizio nome delle immagini
var imageExt=".jpg"; // estensioni
var minDelta=1000; // minimo tempo in msec tra immagini
var maxImg=100; // massimo numero di immagini
function nextimage(){
 var data1=new Date(); 
 var thisTime=data1.getTime();
// numero immagine da caricare nome+tempoinsecdainizio
 var numImg=parseInt((thisTime-startTime)/1000);
 if(numImg>maxImg){
	// fine 
	return;
 } 
// tempo impiegato a caricare l'immagine
 var delta=thisTime-imgTime;
// se inferiore al tempo tra le immagini 
 if(delta<minDelta){
	// aspetta prima di caricarne un'altra
	setTimeout(nextimage,minDelta-delta);
	return;
 }
 imgTime=thisTime;
 if(mImage==null){
	// punta all'immagine
	mImage=document.getElementById("webcam");
 }
 // carica la nuova immagine
 mImage.src=imageNames+numImg+imageExt;
}
</script>
</head>
<body>
<img id="webcam" src="webcam0.jpgf" onload="nextimage();" />
</body>
</html>
'bye

 Prova qualcosa del tipo:
così ho modificato:
<html>
<head>
<script type="text/javascript">
var data=new Date(); 
var startTime=data.getTime();
var imgTime=startTime;
var mImage=null;
var imageNames="img"; // inizio nome delle immagini
var imageExt=".jpg"; // estensioni
var minDelta=500; // minimo tempo in msec tra immagini
var maxImg=823; // massimo numero di immagini
function nextimage(){
 var data1=new Date(); 
 var thisTime=data1.getTime();
// numero immagine da caricare nome+tempoinsecdainizio
 var numImg=parseInt((thisTime-startTime)/1000);
 if(numImg>maxImg){
        // fine 
        return;
 } 
// tempo impiegato a caricare l'immagine
 var delta=thisTime-imgTime;
// se inferiore al tempo tra le immagini 
 if(delta<minDelta){
        // aspetta prima di caricarne un'altra
        setTimeout(nextimage,minDelta-delta);
        return;
 }
 imgTime=thisTime;
 if(mImage==null){
        // punta all'immagine
        mImage=document.getElementById("webcam");
 }
 // carica la nuova immagine
 mImage.src=imageNames+numImg+imageExt;
}
</script>
</head>
<body>
<img id="webcam" src="img0.jpg" onload="nextimage();" />
</body>
</html>
però non va :-(
ho provato a rinominare i file in vari modi:
img0.jpg img1.jpg...
oppure
img000.jpg img001.jpg...
oppure
0.jpg 1.jpg...
oppure
000.jpg 001.jpg
e non vanno nessuno delle sopra elecate metodi.
cosa sbaglio??
ciao

cosa sbaglio??
Ritestato con Mozilla 1.73 e IE 6.0 prendendo la tua modifica e
funziona.
Ti ritorna qualche errore?
Il percorso delle immagini e' quello giusto? Si trovano nella stessa
directory della pagina web? In caso negativo, oltre a modificare il
src per il tag img devi modificare in accordo  imageNames.
Che browser usi per testare la pagina? Visto che lo script usa
document.getElementById potrebbe essere che questo metodo non sia
implementato nel tuo browser. In questo caso elimina le righe con:
var mImage=null;
[...]
if(mImage==null){
        // punta all'immagine
        mImage=document.getElementById("webcam");
}
e sostituisci la riga
mImage.src=imageNames+numImg+imageExt;
con questa
document.images[0].src=imageNames+numImg+imageExt;
Fammi sapere se riesci a risolvere.
Un'altra possibilita' e' che per caricare un'immagine impieghi
talmente tanto tempo che al momeno di caricare la seguente si ritrova
gia' alla fine del "filmato". Se non l'hai testato in locale (ove
dovrebbe caricare le immagini velocemente) provaci e vedi se funziona.
Dalle tue impostazioni il filmato dovrebbe durare quasi 7 minuti, 823
immagini, una ogni 0.5 secondi.
'bye

 immagini, una ogni 0.5 secondi.
in locale l'ho provata, ma non va.
Riassumendo, i file sono tutti nella stessa cartella, i file delle
immagin sono nominati in questo modo img0.jpg,
img1.jpg...img10.jpg...img200.jpg..
e lapagina html č cosě scritta:
<html>
<head>
<script type="text/javascript">
var data=new Date(); 
var startTime=data.getTime();
var imgTime=startTime;
var mImage=null;
var imageNames="img"; // inizio nome delle immagini
var imageExt=".jpg"; // estensioni
var minDelta=500; // minimo tempo in msec tra immagini
var maxImg=823; // massimo numero di immagini
function nextimage(){
 var data1=new Date(); 
 var thisTime=data1.getTime();
// numero immagine da caricare nome+tempoinsecdainizio
 var numImg=parseInt((thisTime-startTime)/1000);
 if(numImg>maxImg){
        // fine 
        return;
 } 
// tempo impiegato a caricare l'immagine
 var delta=thisTime-imgTime;
// se inferiore al tempo tra le immagini 
 if(delta<minDelta){
        // aspetta prima di caricarne un'altra
        setTimeout(nextimage,minDelta-delta);
        return;
 }
 imgTime=thisTime;
 if(mImage==null){
        // punta all'immagine
        mImage=document.getElementById("webcam");
 }
 // carica la nuova immagine
 document.images[0].src=imageNames+numImg+imageExt;
}
</script>
</head>
<body>
<img id="webcam" src="img0.jpg" onload="nextimage();" />
</body>
</html>
non so prorpio dove sbattere la testa. altri sistemi che lavorano con
file esterni, hanno il problema che caricano tutto in una volta le
immagini e poi partono, e questo č sbagliato secondo me.
speriamo di risolvere questo problema.
ciao e grazie dell'aiuto.

una domanda, ma le immagini vengono caricate tutte prima di partire??

Agostino, non mi abbandonare, ti prego!!!