piece of code
抓住一个
截图
我的应用程序屏幕的一个小组项目。在我的Macbook Pro上,代码冻结了屏幕,而在我队友的PC(所有Windows)上,它运行正常,并导出一个。png文件在其根目录中。
代码
public void screenShot(){
//Creating an rbg array of total pixels
int[] pixels = new int[WIDTH * HEIGHT];
int bindex;
// allocate space for RBG pixels
ByteBuffer fb = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 3);
// grab a copy of the current frame contents as RGB
glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, fb);
// convert RGB data in ByteBuffer to integer array
for (int i=0; i < pixels.length; i++) {
bindex = i * 3;
pixels[i] =
((fb.get(bindex) << 16)) +
((fb.get(bindex+1) << 8)) +
((fb.get(bindex+2) << 0));
}
//Allocate colored pixel to buffered Image
BufferedImage imageIn = null;
try{
//THIS LINE
imageIn = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
//THIS LINE ^^^^^
imageIn.setRGB(0, 0, WIDTH, HEIGHT, pixels, 0 , WIDTH);
} catch (Exception e) {
e.printStackTrace();
}
问题
当调试时,我可以看到,当在这一行
imageIn = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
调试器不转到BuffereImage构造函数,而是转到GLFWKeyCallbackI。callback(),然后返回GLFWCursorEnterCallbackI。回调()。在此之后,它完全停止。
在我的主类中,首先是生成缓冲图像的其余代码:
BufferedImage imageIn = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
我不确定我还能尝试什么,我看到了2005年到今天的其他一些帖子,问了类似的Mac问题,但没有答案。