Joc*_*ter 5 java bufferedimage pixels
我正在使用Robot类打印屏幕,我将BufferedImage转换为int数组.然后我想将int数组转换回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);
Run Code Online (Sandbox Code Playgroud)
但我得到错误:ArrayIndexOutOfBoundsException: 2073600但为什么?
我在这一行得到了例外:
raster.setPixels(0, 0, screen.width, screen.height, pixels);
Run Code Online (Sandbox Code Playgroud)
编辑:如果我将第二个bufferedimage类型更改为TYPE_BYTE_GRAY,它正在工作.
小智 13
int[] bitMasks = new int[]{0xFF0000, 0xFF00, 0xFF, 0xFF000000};
SinglePixelPackedSampleModel sm = new SinglePixelPackedSampleModel(
DataBuffer.TYPE_INT, width, height, bitMasks);
DataBufferInt db = new DataBufferInt(pixels, pixels.length);
WritableRaster wr = Raster.createWritableRaster(sm, db, new Point());
BufferedImage image = new BufferedImage(ColorModel.getRGBdefault(), wr, false, null);
Run Code Online (Sandbox Code Playgroud)
变成:
getRaster().getPixels(0, 0, screen.width, screen.height, pixels)
Run Code Online (Sandbox Code Playgroud)
它有效!无论如何,谢谢你的帮助
| 归档时间: |
|
| 查看次数: |
8991 次 |
| 最近记录: |