【发布时间】:2013-01-19 16:02:21
【问题描述】:
我正在使用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);
但我得到了错误:ArrayIndexOutOfBoundsException: 2073600 但是为什么?
我在这一行遇到了异常:
raster.setPixels(0, 0, screen.width, screen.height, pixels);
编辑:如果我将第二个缓冲图像类型更改为 TYPE_BYTE_GRAY,它将起作用。
【问题讨论】:
-
你能分享堆栈跟踪吗?你在哪条线上得到它?
-
我建议您将所有尺寸都基于
screen的大小。为了尽快获得更好的帮助,请发布SSCCE。似乎这个问题也需要一些基本的代码行跟踪和大小显示。
标签: java bufferedimage pixels