# Screenshots von einer Scene erstellen



## argse (24. Okt 2008)

Hallo zusammen!

Ich bin mit Java3d besonders gut vertraut, brauche aber so schnell und einfach wie moeglich eine Loesung fuer folgendes Problem: 
Ich muss den aktuellen Inhalt eines Canvas3D in einer Datei bzw. als Bild speichern. Gibt es dafuer fertige Funktionen?

Danke fuer eure Hilfe.


----------



## maggifresse (28. Okt 2008)

Drück doch einfach den Bildschirm mit der "Druck"-Taste, dann fügste es in Paint ein und schneidest überflüssiges weg.


----------



## Gast (28. Okt 2008)

Toller Tipp
Ich denk mal nicht das die Aufgabe war, erstelle einen Screenshot, sonder schreibe ein Canavas3D in eine Datei.

Also du kannst auf ein BufferedImage zeichnen und das dann in eine Datei schreiben. Guck mal in Java ist auch eine Insel, da steh was dazu drin.


----------



## Marco13 (28. Okt 2008)

Naja, bei einem Canvas3D ist das wohl nicht so ohne weiteres möglich. Ungefähr so könnt's gehen:

```
Dimension dim = canvas.getSize();
Point3f pos = new Point3f( -1.0f, -1.0f, -1.0f); // ???
BufferedImage tempImage = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
ImageComponent2D imageComponent = new ImageComponent2D(ImageComponent.FORMAT_RGB, tempImage);
Raster raster = new Raster(pos, Raster.RASTER_COLOR, 0, 0, dim.width, dim.height, imageComponent, null);
canvas.getGraphicsContext3D().readRaster(raster);
BufferedImage screenshot = raster.getImage().getImage();
```


----------



## Illuvatar (28. Okt 2008)

Oder sowas in der Art (ohne es zu testen):


```
Canvas3D myCanvas = ...
Canvas3D offscreenCanvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration(), true);
offscreenCanvas.setSize(myCanvas.getSize());
myCanvas.getView().addCanvas(offscreenCanvas);
offscreenCanvas().renderOffScreenBuffer();
BufferedImage output = offscreenCanvas.getOffScreenBuffer().getImage();
```


----------



## argse (31. Okt 2008)

hi.

vielen dank fuer die antworten.
problem geloest


----------

