-1

我正在尝试以用户从 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);

我需要的是从“文件选择器保存对话框”中获取用户的扩展名并使用该扩展名写入图像。

我不知道如何在 javaFx 的 Filechooser 中使用 get&set 扩展方法,也找不到实际的实现。

请参阅我的最后一行代码:我想知道如何将“png”更改为用户从“fileChooser 保存对话框”中选择的任何扩展名。

提前致谢。

4

1 回答 1

1

选定的扩展过滤器仅是用户从对话框中的组合框(或类似框)中选择的内容。这可能与文件的实际扩展名匹配,也可能不匹配。例如,对于 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);
}
于 2017-02-08T17:51:56.653 回答