Screenshot capture in Window 8 OS

2019-09-21 05:57发布

问题:

To capture screen shot in my java application i have write following code

Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

BufferedImage capture = new Robot().createScreenCapture(screenRect);

ImageIO.write(capture, "png", new File("resources/img/screenshot.png"));

This is working successfully and capture screen shot but this is not working in windows 8 operating system. any one else who have face this type of problem and get soluction?

回答1:

my application is install into the program file folder and the windows 8 not give permission to write there how i can write there now?

Do not write it there! OS manufacturers as well as Sun/Oracle have been saying for years not to write files to the application's installation directory. It is not only the wrong place to write them, but as you have discovered, does not provide write permissions for a typical Java app.

Instead put the screen-shot in user.home e.g. as seen in this answer.



回答2:

you can do that without writing file in your local machine by using the following code

 ByteArrayOutputStream bos=new ByteArrayOutputStream();
    byte[] imageByte = null;
   try
   {
        //To Get the the size of the screen.
        Rectangle screenRect = new Rectangle(Toolkit
                .getDefaultToolkit().getScreenSize());          

        //To Store the scrreen shot in buffer.
        BufferedImage capture = new Robot()
                .createScreenCapture(screenRect);   

        //To Save the image on specific location.
        ImageIO.write(capture, "png",bos);
        bos.flush();
        imageByte=bos.toByteArray();
        bos.close();

         // File file = new File("resources/img/screenshot.png");
        MultipartEntity mpEntity = new MultipartEntity();
      //  ContentBody cfBody = new FileBody(file);
          ContentBody cfBody = new ByteArrayBody(imageByte,"screenshot.png");
        mpEntity.addPart("screenshot", cfBody);

}

send direct the byte array in plase of the image