Zum Inhalt springen

Problem: Collection/List


Mockba

Empfohlene Beiträge

Hallo,

ich bin gerade dabei einen DesktopRecorder zu programmieren.

Die Screenshots erzeuge ich mit SWT in einem Thread, und speicher sie dann in eine ArrayList. Danach werden sie in ein BufferdImage umgewandelt und als AVI abgespeichert.

Hier nur mal der Capture-Thread:

	public void run() {


		while (true) {		


			time1 = System.currentTimeMillis();

			display = new Display();


			GC gc = new GC(display);


			gc.copyArea(image, x, y);


			imageList.add(image);


			gc.dispose();


			display.dispose();


			if (System.currentTimeMillis() - time1 < (1000 / optionen

					.getFramerate())) {

				time1 = (1000 / optionen.getFramerate())

						- (System.currentTimeMillis() - time1);

				try {

					Thread.sleep(time1);

				} catch (InterruptedException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				}

			}

		}

	}

Nun wenn ich die Images aus dem ArrayList holle und lokal als jpg abspeichere, hab ich zwar genau soviele JPGs wie Image in der ArrayList sind, aber sie sie zeigen alle den Inhalt des letztem gecapturten Bildes.

Ich nehme mal an das die ArrayList denk, das die Images alle gleich sind und so alle Referenzen auf das letzte Image setzt.

Gibt es eine Collection/Liste die alle Elemente einzel speichert?

Oder hat vieleicht jemand eine andere Idee, wie ich die Images zwischenspeichern könnte.

lg Christoph

PS: ich weis das man auch mit Java.Robot Screenshots machen kann, aber das hilft mir nicht weiter!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gehe ich richtig in der Annahme dass deine Variable "image" eine Klassenvariable ist?

Weil das hört sich ganz so an, als wenn du bei jedem durchlauf auf image bei jedem Durchlauf immer auf dasselbe Objekt zeigt, das heißt du zeichnest bei jedem Durchlauf dasselbe Grafik-Objekt neu und bearbeitest damit auch alle schon in der ArrayList abgespeicherten Grafiken.

Das heißt, wenn es das Problem ist, vor jedem Durchlauf deine Variable image neu initalisieren, und dann dürfte es klappen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...