How to flip a screenshot? I can not find the problem elsewhere. Code example:
/* *@param fileLoc //Location of fileoutput destination *@param format //"png" *@param WIDTH //Display.width(); *@param HEIGHT //Display.height(); */ private void getScreenImage(){ int[] pixels = new int[WIDTH * HEIGHT]; int bindex; // allocate space for RBG pixels ByteBuffer fb = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 3);//.order(ByteOrder.nativeOrder()); // grab a copy of the current frame contents as RGB glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, fb); BufferedImage image = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB); // 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)); } try { //Create a BufferedImage with the RGB pixels then save as PNG image.setRGB(0, 0, WIDTH, HEIGHT, pixels, 0 , WIDTH); ImageIO.write(image, format , fileLoc); } catch (Exception e) { System.out.println("ScreenShot() exception: " +e); } }
Basically, the code works to capture the screen and save in the format of "png".
But it displays the image horizontally because glReadPixels(); ,
read from bottom left to top right.
So, as I flip the image horizontally until I ImageIO.write(); ?
Thanks, Rose.
source share