簡體   English   中英

如何在javaFx中使用FileChooser以用戶選擇的格式保存圖像?

[英]How to save Image in a user selected format using FileChooser in javaFx?

我正在嘗試從 FileChooser SaveDialog 以用戶選擇的格式保存圖像。 這是我的代碼:

java docs 對 get 和 set 方法說同樣的事情我不明白。

    File f1 = new File("C:\\Users\\KIRAN\\Desktop\\Andromeda1.png");

    FileChooser stegoImageSaver = new FileChooser();
    stegoImageSaver.setTitle("Save Image File");
    stegoImageSaver.setInitialDirectory(new File("C:\\"));
    stegoImageSaver.getExtensionFilters().addAll(
        new FileChooser.ExtensionFilter("PNG Files", "*.png"),
        new FileChooser.ExtensionFilter("BMP Files", "*.bmp"),
        new FileChooser.ExtensionFilter("GIF Files", "*.gif"));
    File f1 = stegoImageSaver.showSaveDialog(null);

    ImageIO.write(img, "png", f1);

我需要的是從“filechooser 保存對話框”中獲取用戶的擴展名並使用該擴展名寫入圖像。

我不知道如何在 javaFx 中的 Filechooser 中使用 get&set 擴展方法,也找不到實際實現。

請參閱我的最后一行代碼:我想知道如何將“png”更改為用戶從“fileChooser 保存對話框”中選擇的任何擴展名。

提前致謝。

選定的擴展過濾器只是用戶從對話框中的組合框(或類似框)中選擇的內容。 這可能與文件的實際擴展名匹配,也可能不匹配。 例如,在 Windows 中,您可以選擇png過濾器,但使用鍵盤輸入xyz.gif

您應該從showSaveDialog返回的文件中獲得結尾:

File f1 = stegoImageSaver.showSaveDialog(null);
if (f1 != null) {
    String name = f1.getName();
    String extension = name.substring(1+name.lastIndexOf(".")).toLowerCase();
    ImageIO.write(img, extension, f1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM