2017-02-27 107 views
-2

我有幾個問題,當我幾次做多個屏幕截圖時:例如,我有時會做兩個屏幕截圖,第二個屏幕截圖與第一個截屏相同。多個屏幕截圖捕獲相同的圖像

這是我的代碼:

public static void main(String[] args) { 
    BufferedImage screenshot = screen(); 
    save_screen(screenshot,"title1"); 
    //some instructions 
    screenshot=screen(); 
    save_screen(screenshot,"title2"); 
} 

private static BufferedImage screen(){ 
    BufferedImage image=null; 
    try { 
     image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
     ImageIO.write(image, "png", new File("/screenshot.png")); 
    } catch (HeadlessException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } catch (AWTException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    return image; 
} 

private static void save_screen(BufferedImage image,String title){ 
    File output = new File("C:\\Users\\MyPC\\Desktop\\" + title + ".png"); 
    File dir = output.getParentFile(); 
    if (dir.exists() || dir.mkdirs()) { 
    try { 
     ImageIO.write(image, "PNG", output); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }  
    } else { 
     System.out.println("Bad Path - " + dir); 
    }  
} 

我能做些什麼來解決這個問題?

預先感謝您!

+0

後恰好添加的時間間隔低至0.5秒。 **更高的**時間或**更低的** – Thecarisma

+0

個人而言,我會避免在截圖時將截圖寫入磁盤,這是您可能不想要的開銷。你可以考慮使用'Robot'的同一個實例,進一步減少開銷。鏡頭之間的一般延遲是多少? – MadProgrammer

回答

0

只需添加一個時間間隔的代碼下面捕獲圖像1秒

public static void main(String[] args) { 
BufferedImage screenshot = screen(); 
save_screen(screenshot,"title1"); 
//some instructions 
//Sleep for 1 seconds 
Thread.Sleep(1000); 
screenshot=screen(); 
save_screen(screenshot,"title2"); }