我正在使用Java在Linux上編寫屏幕捕獲程序。我如何使用ImageIO.write()
像我用它在窗口,如:Linux:如何使用ImageIO.write()保存圖像?
ImageIO.write(screenshot, "png", new File("c:/output.png"));
我正在使用Java在Linux上編寫屏幕捕獲程序。我如何使用ImageIO.write()
像我用它在窗口,如:Linux:如何使用ImageIO.write()保存圖像?
ImageIO.write(screenshot, "png", new File("c:/output.png"));
如果您正在編寫屏幕截圖程序,那麼您可能希望使用FileChooser來允許用戶選擇將文件輸出到哪裏。
這裏是你如何能實現一個簡單的例子:
JFileChooser jfc = new JFileChooser();
int returnVal = jfc.showSaveDialog();
if(returnVal == JFileChooser.APPROVE_OPTION) {
File outputFile = jfc.getSelectedFile();
ImageIO.write(screenshot, "png", outputFile);
}
這也將有助於使你的代碼完全跨平臺,而不是硬編碼特定於平臺的路徑到程序中。
在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
看到所有安裝的驅動器。
獲得,但是與你提到的一樣但我得到的路徑沒有找到錯誤,我給了硬代碼路徑,然後也是相同的異常即將到來,但如果我給桌面路徑它正在保存...什麼exaclty在我的情況下的問題 –
'System.exec(「gnome-screenshot」)' – wchargin
你有什麼問題? – BevynQ
用戶的主目錄用'System.getProperty(「user.home」);' - http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html –