Jag håller på med en applet som ska göra så att jag kan skicka ut bilder från min webbkamera så att det blir strömmande.
Jag använder mig av programmet ConquerCam för att generera bilderna, sen hämtar jag upp den bilden med min applet och visar som en film på webbsidan.
Hursomhelst......hur får jag bilden att uppdateras. Just nu laddar den bara in "första" bilden....sen slutar den.
Jag vill altså att den ska uppdatera bilden och visa den nya.
Ändra så att tråden med jämna mellanrum anropar en funktion som läser in den nya bilden. För att undvika flimmer, läs in den nya bilden i en minnesbuffert, kopiera sedan denna minnesbuffert till skärmen.
/T
------------------
Jensen Ambassadör, mitt bästa köp! www.jensen.no
okej. Sen till ett annat problem. Eftersom jag är ganska mybörjare på java så vill jag gärna slippa använda nån krånglig editor med en massa onödiga funktioner(för nybörjaren)
Så jag tänkte att jag skulle börja använda command prompten för att kompilera(jag har använt JBuilder förr)
Det går bra att kompilera med JBuilder fast när jag gör det genom commandprompten( javac filnamn.java) så står det så här(jag kompilerar med -deprecation):
webcam.java:20: warning: stop() in java.lang.Thread has been deprecated
trad.stop();
det verkar vara så att inte funktionen stop() går att använda eller?
Det som är irriterande är att det fungerar med JBuilder fast inte utan : /
Men det är så här....jag använder ett program som heter ConquerCam som skriver används för att ta bilder från webbkameran. Sen har jag ställt in den att ta en bild i sekunden. Och den skriver ju över den förra bilden så att inte hårddisken ska fyllas med en massa bilder
Då är det tänkt att min applet ska ladda den bilden........sen efter en sekund....ladda in den nya versionen av bilden(som ConquerCam har genererat) osv osv
Så det handlar bara om bild altså...som ska uppdateras i appleten.
Hur göres?
Man kan ju tycka att när den kommer till loopen så borde den ju ladda in en ny version av bilden varje gång loopen körs....men så är inte fallet
PS. det är altså en väldigt enkel applet jag ska göra.....bara som täcker mina behov :)
jag antar att du var sarkastisk.....men vad menar du egentligen. Jag antar att det du menade var att det suger upp minne om man skapar ett nytt bildobjekt varje gång.....eller?
Men hur faan ska man lösa det då. Det verkade ju inte fungera. Vad störande.
Är det jävligt svårt att hämta data från USB:n och visa den på nåt sätt i en applet, video dvs
Fast jag antar att jag inte ens ska försöka med ngt sånt ;)
edebro>>
Det var inte alls menat som sarkastiskt när jag tog upp garbage collector. Du ville ju hålla ned minnesutnyttjandet och genom skräpsamlaren rensas de de gamla objekten bort om man ropar på konstruktorn varje varv i slingan.
Jag har inte själv gjort exakt det du vill göra, men däremot har jag plockat in diverse bilder i en array och hämtat dessa vid behov. Det fungerade utmärkt. Det som kan vara ett problem i ditt fall är kanske inte själva omladdningen av bilden utan rensningen av bufferten (strömmen). Progget laddar mycket riktigt in den nya bilden från streamen men i streamen ligger ju den gamla bilden kvar så den nya bilden blir lika med den gamla ... *en teori*
Har du kollat den länken jag gav dig?
I suns tutor eller reference kanske du kan få ihop en egen snutt där du kan kontrollera streamen och rensa den.
Tyvärr verkar det som att de som vet bättre än jag gått på julledigt eller nåt, men jag kanske ger dig lite uppslag iaf?.
tack för svaren. Orsaken att jag inte visste om du var sarkastisk eller inte är att jag inte ens vet vad skräpsamlaren är ;)
Man kan även kalla mig nybörjare
Det skulle vara jävligt läckert om man kunde hämta data direkt från USB:n, så man slipper använda ConquerCam, och även visa mer än 1 bild i sekunden
Fast jag antar att det är oerhört svårt. Jag har ingen aning om hur det fungerar, måste man implementera några drivrutiner till webcamen eller är sånt där standard?
Altså ungefär så man bara behöver läsa kontinuerligt från USB kontakten eller?
Om nån har gjort ngt liknande så skulle jag uppskatta en liten genomgång hur det går till
Jag har för mig att du måste gå via JNI för att kunna läsa av hårdvaruenheter. Kolla runt lite på http://java.sun.com efter JNI kanske du hittar något intressant. :)
edebro >>
Grov förenklad förklaring om skräpsamlaren:
Skräpsamlaren håller "rent" genom att frigöra minne som inte används... i många andra programmeringsspråk måste man först tala om hur mycket minne man behöver och sen ta bort det innan man avslutar programmet eller går ut ett objekt.
I java behöver man inte tänka så mycket på detta utan kan blåsa på ganska friskt - om man nu inte är ute efter att optimera förståss.. ;)
Således menade jag att om man skapar ett nytt bildobjekt med referens (ordet "bild" i ditt fall) ovan på ett annat objekt med samma referens kastas det gamla i skräphögen och städas undan automagiskt.
Vad det gäller ditt "problem" kan du ju dels kolla mitt tips och/eller följa farbror SPiN's goda råd :)
Men det borde ju finnas nån som gjort detta tidigare så sök av genom google oxå ;)
Jag har för mig att jag har gjort något liknande för läänge sedan. Har du provat att göra .flush() på bild objektet? jag har för mig att det tömmer "cachen"
NNÄÄj :)
jag tror att det oxå kan vara lite mera komplicerat änn så..
Prova med att göra så här
URLConnection myConnection = new URLConnection(myURL);//där myURL är urlen du vill hämta bilden från;
myConnection.setUseCaches(false);
URL myNocachURL = myConnection.GetURL();
// nu har du en nocachad URL som du kan använda för att hämta bilden
[Redigerat av Dinodipp den 30 dec 2001]
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e