Zum Inhalt springen

Problem: Collection/List


Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...