BufferedImage --> byte[]

Loki2

Erfahrenes Mitglied
Hallo

Folgendermaßen erstelle ich ein Screenshot:

Code:
 Dimension screenSize = toolkit.getScreenSize();
 Rectangle screenRect = new Rectangle(screenSize );
 Robot robot = new Robot();
 BufferedImage image = robot.createScreenCapture(screenRect);

Funktioniert soweit auch wunderbar, jetzt brauch ich das Image aber als byte[] also ohne das ich das BufferedImage vorher speicher. Wie kann ich das hinbekommen?

Hoffe ihr könnt mir weiterhelfen.

Gruß und so
Loki2
 
Code:
WritableRaster myRaster = image.getRaster();
int[] tempArr = myRaster.getPixels(0,0,myRaster.getWidth(),myRaster.getHeight(),(int[])null);

So ungefähr müsste es gehen, glaub ich .. Ich weiß jetzt nicht aus dem Stand, ob man es direkt in ein byte[] Array laden konnte. Musste ma schauen ;)
 
Hallo,

erstmal vielen Dank für die Antwort.

Leider kann man es nicht direkt in ein byte[] laden und mir ist auch nicht ganz klar wie ich aus einem int[] ein byte[] machen...?! :-(

Gruß und so
Loki2
 
Hallo,

ging auch mit:
Java:
BufferedImage srcImage = ImageIO.read(new File("c:/winter.jpg"));
//DataBufferInt -> bei BufferedImage.TYPE_INT_RGB -> getData() -> int[]
byte[] data = ((DataBufferByte) srcImage.getData().getDataBuffer()).getData();

Gruß Tom
 
Hi,

wenn Dir die Lösung von Thomas nicht reicht kann ich meinen Code nochmal raussuchen aber wohl erst heute Abend oder so?!

Viele Grüße
Loki2
 
Also wenn ich das so mache wie du sagst Tom dann bekomm ich

Exception in thread "main" java.lang.ClassCastException: java.awt.image.DataBufferInt
at JTwainDemo.test(JTwainDemo.java:402)
at JTwainDemo.main(JTwainDemo.java:274)

Aber ich lese das Bild mittels Jimi ein! Aber das macht glaub keinen Unterschied!?

Hab gerade gesehen das das BufferedImage von Typ DataBufferInt ist... Wie kann ich da das DataBufferByte rausbekommen
thx
 
Zuletzt bearbeitet:
Zurück