2013-05-19 107 views
1

我正在使用Java在Linux上編寫屏幕捕獲程序。我如何使用ImageIO.write()像我用它在窗口,如:Linux:如何使用ImageIO.write()保存圖像?

ImageIO.write(screenshot, "png", new File("c:/output.png")); 
+0

'System.exec(「gnome-screenshot」)' – wchargin

+0

你有什麼問題? – BevynQ

+1

用戶的主目錄用'System.getProperty(「user.home」);' - http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html –

回答

1

如果您正在編寫屏幕截圖程序,那麼您可能希望使用FileChooser來允許用戶選擇將文件輸出到哪裏。

這裏是你如何能實現一個簡單的例子:

JFileChooser jfc = new JFileChooser(); 
int returnVal = jfc.showSaveDialog(); 

if(returnVal == JFileChooser.APPROVE_OPTION) { 
    File outputFile = jfc.getSelectedFile(); 
    ImageIO.write(screenshot, "png", outputFile); 
} 

這也將有助於使你的代碼完全跨平臺,而不是硬編碼特定於平臺的路徑到程序中。

2

在Linux上沒有「C:\」驅動器。相反,您的驅動器安裝在安裝點(通常爲/)。你可以寫你的home目錄(Win7的C:\Users\yourusername\的當量)與任一:

ImageIO.write(screenshot, "png", new File("/home/yourusername/output.png")); 
ImageIO.write(screenshot, "png", new File("~/output.png")); 

或到臨時文件夾(如果您有權限)與:

ImageIO.write(screenshot, "png", new File("/tmp/output.png")); 

你也可以寫當前目錄簡單:

ImageIO.write(screenshot, "png", new File("output.png")); 

要找到您的驅動器的安裝點,在終端上運行df -h看到所有安裝的驅動器。

+0

獲得,但是與你提到的一樣但我得到的路徑沒有找到錯誤,我給了硬代碼路徑,然後也是相同的異常即將到來,但如果我給桌面路徑它正在保存...什麼exaclty在我的情況下的問題 –