Mockba Geschrieben 2. Dezember 2009 Geschrieben 2. Dezember 2009 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! Zitieren
Dragon8 Geschrieben 2. Dezember 2009 Geschrieben 2. Dezember 2009 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. Zitieren
Mockba Geschrieben 2. Dezember 2009 Autor Geschrieben 2. Dezember 2009 Hey, danke! Wenn ich image neuinitialisiere, dann glabts! :upps hät man auch druf kommen können! lg christoph Zitieren
Empfohlene Beiträge
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.