Robię z klasy Robot
printscreen i konwertuję BufferedImage na tablicę int. Następnie chcę przekonwertować tablicę int z powrotem na buforowany obrazek, ale to daje błąd. To jest mój kod:int array na BufferedImage
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage printscreen = robot.createScreenCapture(new Rectangle(screen));
int[] pixels = ((DataBufferInt) printscreen.getRaster().getDataBuffer()).getData();
BufferedImage image = new BufferedImage(screen.width, screen.height, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = (WritableRaster) image.getRaster();
raster.setPixels(0, 0, screen.width, screen.height, pixels);
Ale pojawia się błąd: ArrayIndexOutOfBoundsException: 2073600
, ale dlaczego?
Dostaję wyjątek na tej linii:
raster.setPixels(0, 0, screen.width, screen.height, pixels);
EDIT: To jest działanie, jeśli zmienię drugi typ BufferedImage do TYPE_BYTE_GRAY.
Czy możesz udostępnić stacktrace? Na której linii się znajdujesz? – Swapnil
Eddited we wpisie. –
Polecam opierając wszystkie wymiary na rozmiarze 'ekranu'. Aby uzyskać lepszą pomoc wcześniej, opublikuj [SSCCE] (http://sscce.org/). Wydaje się również, że ten problem krzyczy za podstawowe wykrywanie linii kodu i wyświetlanie rozmiarów. –