Hi
also vorneweg ich habe nicht vor Screenshots zu machen, ich möchte jezt erst mal zum Einstieg den Color und den Tiefenpuffer meines Canvas auslesen, um später dann gewisse berechnungen darauf auszuführen.
Ich habe folgendes COdesnippet zum Ausprobieren
Allerdings scheint buff.asIntBuffer().array nicht korrekt zu funktionieren, ich bekomme folgenden Fehler:
Ich habe es auch mal durchgerechnet: In dem Buffer stecken pro Pixel für mich 3 Byte Werte. Wenn ich buff.asIntBuffer() aufrufe, fasst er aber glaube ich 4 Bytes zu einem Int zusammen. Könnt ihr mir sagen wie ich aus dem ByteBuffer ein Int Array erzeugen kann, so dass ich es per setRGB dem Bild zuweisen kann?
also vorneweg ich habe nicht vor Screenshots zu machen, ich möchte jezt erst mal zum Einstieg den Color und den Tiefenpuffer meines Canvas auslesen, um später dann gewisse berechnungen darauf auszuführen.
Ich habe folgendes COdesnippet zum Ausprobieren
Code:
public void keyPressed(KeyEvent e) {
// Auslesen der Linien und übertragen in ein bild
int width = worldwindCanvas.getWidth();
int height = worldwindCanvas.getHeight();
BufferedImage img = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
int sizeOfBuffer = width * height * 3;
ByteBuffer buff = BufferUtil.newByteBuffer(sizeOfBuffer);
// Screenshot
canvas.getGL().glReadPixels(0, 0,
width,
height, GL.GL_RGB,
GL.GL_UNSIGNED_BYTE, buff);
// img.setRGB(0, 0, width, height, buff.asIntBuffer().array(), 0, 0);
try {
ImageIO.write(img, "PNG", new File("test.png"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Allerdings scheint buff.asIntBuffer().array nicht korrekt zu funktionieren, ich bekomme folgenden Fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
at java.nio.IntBuffer.array(IntBuffer.java:940)
at visualization.frames.GeoFrame.keyPressed(GeoFrame.java:567) ....
Ich habe es auch mal durchgerechnet: In dem Buffer stecken pro Pixel für mich 3 Byte Werte. Wenn ich buff.asIntBuffer() aufrufe, fasst er aber glaube ich 4 Bytes zu einem Int zusammen. Könnt ihr mir sagen wie ich aus dem ByteBuffer ein Int Array erzeugen kann, so dass ich es per setRGB dem Bild zuweisen kann?