Live-Bild wird im Browser nicht aktualisiert

Status
Nicht offen für weitere Antworten.

UdjENE

Mitglied
Hey leute,

habe da ein kleines Applet-Programm geschrieben, dass mir alle 500 ms ein neus bild lädt und anzeigt. Klappt auch wunderbar im Applet-Viewer. Jedoch wenn ich das Applet in eine HTML-Seite einbinde und im Browser starte (FF und IE) wird das Bild nur am anfang geladen und nicht mehr aktualisiert. dieses Problem tritt jedoch nur mit der jre 1.6 auf. mit 1.5 hat das Aktualisieren im Browser geklappt.


Code:
import java.awt.*;
import java.applet.*;
import java.net.URL;
import java.text.DateFormat;
import java.util.Date;


public class LiveCam extends Applet implements Runnable
{

	private static final long serialVersionUID = 1L;
	Image img;
	Thread liveThread;
	int timeInterval=500;
	String time="";
	

	public void destroy()
	{
		liveThread.stop();
	}

	
	public void run()
	{
		
		while (true)
		{
			
			try
			{
				// lege den Thread schlafen
				Thread.sleep(timeInterval);

				// das Image in den Buffer ablegen
				img.flush();
				img = getImage(new URL("http://localhost/live.jpg"));
				
				// warte bis Image geladen ist
				MediaTracker mediaTracker_track = new MediaTracker(this);
				mediaTracker_track.addImage(img, 1);
				mediaTracker_track.waitForID(1);
				// zeichne neues Image
				repaint();
			}
			catch (Exception e)
			{
				System.out.println("Caught:"+e.toString());
			}
		}
	}

	public void init()
	{
		try
		{
			//img = getImage(getCodeBase(),"live.jpg");
			img = getImage(new URL("http://localhost/live.jpg"));
			MediaTracker mediaTracker_track = new MediaTracker(this);
			mediaTracker_track.addImage(img, 1);
			mediaTracker_track.waitForID(1);
		}

		catch(Exception e)
		{
			showStatus("Problem getting initial image: "+e.toString());
			return;
		}

		liveThread = new Thread(this);
		liveThread.start();

	}

	public void paint(Graphics g)
	{
		try 
		{ 
		  DateFormat dateInstance = DateFormat.getDateTimeInstance(); 
		  time = dateInstance.format( new Date() ); 
		  
		} 
		catch ( Exception e ) 
		{ 
		  e.printStackTrace(); 
		}
			
			g.drawImage(img, 0,0, this);
			g.drawString("Time:", 0,300);
			g.drawString(time, 40,300);
	}
	
}

die einziegste Lösung, die mir bis jetzt eingefallen ist, biem anfordern des bildes eine zufallszahl hintendranzuhängen. dadurch wird das Bild im Browser zwar aktualisiert, aber max. alle 2 sec. (obwohl Interval auf 500 ms gesetzt ist) und mit einer hohen CPU-Auslastung.

Hat jeman eine Idee was da los ist???
 

UdjENE

Mitglied
ne keine ausgabe. übrigens das neue bild wird erst angezeigt wenn ich den Broswer zu mache und dann wieder starte. also ein Browser-Refresh nützt da garnix
 

UdjENE

Mitglied
hab´s grad probiert mit img = ImageIO.read( new File( "live.jpg" ) );. leider hat sich nix geändert
 

Wildcard

Top Contributor
Nein, das ist keine Lösung, so geht es nur lokal.
Du musst dich über http zu dem Server verbinden von dem das Applet geladen wurde und dir dort das Bild holen.
Dafür muss das Applet nicht signiert sein.
 

UdjENE

Mitglied
hast recht, geht nur lokal. vom lokalen Webserver kommt gar kein bild.
kannst du dafür vlt ein beispiel posten?
 

UdjENE

Mitglied
hast du es so gemeint? hat leider nix geändert. bild wird nicht aktualisiert...
Code:
public void run()
	{
		
		while (true)
		{
			
			try
			{
				// lege den Thread schlafen
				Thread.sleep(timeInterval);

				// das Image in den Buffer ablegen
				img.flush();
				
				URL url = new URL ("http://localhost/live.jpg");
			        InputStream in = new BufferedInputStream (url.openStream ());
			    
			        img = ImageIO.read(in);
				
				// warte bis Image geladen ist
				MediaTracker mediaTracker_track = new MediaTracker(this);
				mediaTracker_track.addImage(img, 1);
				mediaTracker_track.waitForID(1);
				// zeichne neues Image
				repaint();
			}
			catch (Exception e)
			{
				System.out.println("Caught:"+e.toString());
			}
		}
	}

von einem externen Server, geht es ebenfalls nicht.
 

Wildcard

Top Contributor
1. Den MediaTracker brauchst du nicht.
2. Den Stream musst du schließen, ImageIO macht das nicht.
3. mach vorher mal folgendes: ImageIO.setUseCache(false);
4. was spricht die Java Konsole.
5. ein System.out.println(img); in die run.
 

UdjENE

Mitglied
hi also meine run() sieht nun so aus:

Code:
Thread.sleep(timeInterval);
				
ImageIO.setUseCache(false); 
				
URL url = new URL ("http://localhost/live.jpg");
InputStream input = new BufferedInputStream (url.openStream ());
			    
img = ImageIO.read(input);
System.out.println(img);
				
repaint();
input.close();

das Image wird jedoch nicht aktualisiert. und wenn ich das Image vom localhost lösche, dann kommt nicht mal eine Warnmeldung in der Konsole. die einzigste Meldung die alle 500ms kommt ist die:

BufferedImage@e576d4: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@105d88a transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 320 height = 240 #numDataElements 3 dataOff[0] = 2
 

UdjENE

Mitglied
nein, der Hash BufferedImage@xxxxxx ist alle 500ms anders. also das Applet fordert schon immer ein neues Image an, nur der Browser will das Bild nicht akt.
 

Wildcard

Top Contributor
UdjENE hat gesagt.:
nein, der Hash BufferedImage@xxxxxx ist alle 500ms anders. also das Applet fordert schon immer ein neues Image an, nur der Browser will das Bild nicht akt.
Der Browser hat da überhaupt nichts zu melden. Er initialisiert das Applet, von da ab muss es alleine klarkommen.
 

UdjENE

Mitglied
also mit img = getToolkit().createImage(new URL ("http://localhost/live.jpg")); geht´s leider aucg nicht. wie gesagt im AppletViewer funktionierts einwandfrei, das Applet fordert alle 500ms ein neues Bild vom localhost an. aber wenn das Applet im Browser arbeitet, wird nix vom localhost angefordert :bahnhof:
 

Wildcard

Top Contributor
Du hast hoffentlich auch vor jedem versuch den Java Cache gelöscht (am besten du schaltest ihn ganz aus)?
Das ist nämlich ein böse Falle für Applet Entwickler :wink:
 

UdjENE

Mitglied
naja dazu muss ich sagen, dass das Cache löschen nix geändert hat. denn wenn ich eine neue Appletversion geladen habe, hat er mir die alte angezeigt, obwohl ich Cache geleert habe.
deshalb habe ich vor dem laden einer neuen Version den FF neugestartet.
So komisch ist halt noch, dass das ganze mit der jre 1.5 geklappt hat. aber mit jre 1.6 geht das nicht.
 

UdjENE

Mitglied
hi, also ich hab´s jetzt hinbekommen, dass das bild im browser aktualisiert wird und zwar hänge ich an die URL eine Zufallszahl :
Code:
URL url = new URL ("http://localhost/live.jpg?"+Math.random());

also das bild wird jetzt alle 500ms aktualisiert und nicht wie am anfang alle 2s. denke das liegt daran, dass ich imageIO verwende und den Java Cache ausgeschaltet habe. thx wildcard!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Bug-Fixing von der Live-Website Tools - Maven, Gradle, Ant & mehr 17
J Applet Live Ticker Tools - Maven, Gradle, Ant & mehr 10
H Applet drawImage gibt falsches bild aus Tools - Maven, Gradle, Ant & mehr 6
N Bild schieben via Drag 'n Drop ist zu schnell! Tools - Maven, Gradle, Ant & mehr 6
G Bild wird in Applet nicht angezeigt! Tools - Maven, Gradle, Ant & mehr 6
C Mein Applet zeigt mein Bild im Internet nicht an Tools - Maven, Gradle, Ant & mehr 2
H Borderlayout und Bild in Applet einfügen Tools - Maven, Gradle, Ant & mehr 4
F Bild speichern Tools - Maven, Gradle, Ant & mehr 4
K Applet mit mehreren Paketen und Bild/Ton-Ordnern in Browser Tools - Maven, Gradle, Ant & mehr 2
G bild öffnen mit BufferedImage Tools - Maven, Gradle, Ant & mehr 4
D Runnable JApplet mit Bild/Ovals "übermalt" Buttons Tools - Maven, Gradle, Ant & mehr 6
F Warum wird das Bild nicht angezeigt? Tools - Maven, Gradle, Ant & mehr 9
F Bild über Applet aussuchen und auf Serverladen Tools - Maven, Gradle, Ant & mehr 14
K Bild auf JButton in Applet, JButton wir aber net angezeigt? Tools - Maven, Gradle, Ant & mehr 7
S mouseEntered mit einem Bild im Applet Tools - Maven, Gradle, Ant & mehr 17
M Applet soll Bild übertragen Tools - Maven, Gradle, Ant & mehr 9
F Ein Bild in einem Applet anzeigen? Tools - Maven, Gradle, Ant & mehr 2
J Bild in Array einlesen Tools - Maven, Gradle, Ant & mehr 13
T Mit Applet Bild von einer anderen HP darstellen Tools - Maven, Gradle, Ant & mehr 28
S Access Denied beim Bild laden Tools - Maven, Gradle, Ant & mehr 7
G Bild in einem TextField oder TextArea? Tools - Maven, Gradle, Ant & mehr 3
K Java Lade - Bild ändern Tools - Maven, Gradle, Ant & mehr 9
D sich bewegendes bild + timer Tools - Maven, Gradle, Ant & mehr 6
B Bild Tools - Maven, Gradle, Ant & mehr 2
G Bild im Applet laden und ausgeben Tools - Maven, Gradle, Ant & mehr 2
K Bild (jpg) in einem JApplet Tools - Maven, Gradle, Ant & mehr 2
J Screenshot to Form / Clipboard Bild übertragen Tools - Maven, Gradle, Ant & mehr 2
Z java-puzzel lädt bild nicht Tools - Maven, Gradle, Ant & mehr 3
J Bild als Hintergrund Tools - Maven, Gradle, Ant & mehr 24
S Problem: Bild im Applet wird 3-4 Mal geladen Tools - Maven, Gradle, Ant & mehr 5
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
pkm Beim Deployen wird ein Package nicht gefunden, obwohl aus Buildpath. Tools - Maven, Gradle, Ant & mehr 0
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
D [MAVEN] Artifact wird nicht vom Repository(manager) geladen Tools - Maven, Gradle, Ant & mehr 5
G Maven JAR-File schmeißt NoClassDefFoundError wenn /lib Verzeichnis nicht daneben entpackt wird Tools - Maven, Gradle, Ant & mehr 9
F Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 16
M EJB wird nicht richtig deployed Tools - Maven, Gradle, Ant & mehr 2
M Java3D Applet flackert wenn ein Button(HTML) gedrückt wird Tools - Maven, Gradle, Ant & mehr 11
P Ant build.xml, danach wird ein srcpackage vergessen Tools - Maven, Gradle, Ant & mehr 4
G Applet Destroy methode wird nicht aufgerufen :( Tools - Maven, Gradle, Ant & mehr 4
R JFrame wird nicht angezeigt. Tools - Maven, Gradle, Ant & mehr 3
U Hauptklasse wird nicht gefunden. Tools - Maven, Gradle, Ant & mehr 9
G Thread für bewegte Zeichnung wird nicht gestartet Tools - Maven, Gradle, Ant & mehr 3
L Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 15
N applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 6
B Java Fehler, weiß aber nicht wie er behoben wird. :'( Tools - Maven, Gradle, Ant & mehr 10
G Aus Java Anwendung wird Applet Tools - Maven, Gradle, Ant & mehr 3
M NORTH-Button wird im Firefox nicht dargestellt, im IE schon Tools - Maven, Gradle, Ant & mehr 4
C jar Fehler? Text wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 11
J Warum wird das Applet nicht angezeigt? Tools - Maven, Gradle, Ant & mehr 7
K Applet wird nicht geladen Tools - Maven, Gradle, Ant & mehr 19
T Eigenes Applet wird nicht angezeigt, aus dem Web gehts Tools - Maven, Gradle, Ant & mehr 4
C Frame wird nicht geöffnet (Applet) Tools - Maven, Gradle, Ant & mehr 11
J Applet wird geladen aber nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
D Applet wird nicht geladen. Tools - Maven, Gradle, Ant & mehr 5
M Aktion wenn die Maustaste losgelassen wird Tools - Maven, Gradle, Ant & mehr 4
S Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 3
P Probleme mit IE und sp2 - Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 11
J Applet wird eingebunden aber nicht aktiviert Tools - Maven, Gradle, Ant & mehr 6
S Java-Applet wird nicht erneuert Tools - Maven, Gradle, Ant & mehr 2
M Applet wird mal erkannt und mal nicht Tools - Maven, Gradle, Ant & mehr 9

Ähnliche Java Themen

Neue Themen


Oben