Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javaFx中使用FileChooser以用户选择的格式保存图像?_Java_Image_Javafx_Filechooser_Save Dialog - Fatal编程技术网

如何在javaFx中使用FileChooser以用户选择的格式保存图像?

如何在javaFx中使用FileChooser以用户选择的格式保存图像?,java,image,javafx,filechooser,save-dialog,Java,Image,Javafx,Filechooser,Save Dialog,我正在尝试从FileChooser SaveDialog以用户选择的格式保存图像。这是我的密码: 我不明白 File f1 = new File("C:\\Users\\KIRAN\\Desktop\\Andromeda1.png"); FileChooser stegoImageSaver = new FileChooser(); stegoImageSaver.setTitle("Save Image File"); stegoImageSaver.setI

我正在尝试从FileChooser SaveDialog以用户选择的格式保存图像。这是我的密码:

我不明白

    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

您应该从从
showsavedilog
返回的文件中获取结尾:

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);
}

您可以使用
getSelectedExtensionFilter
检查用户选择的扩展名。你也可以检查文件名。这个例子应该能让你了解完成这项工作所需的步骤。我认为您需要一种方法将文件转换为正确的格式,具体取决于选择的ext@IQV你能给我一个实现它的小例子吗?对不起,我只看了文档。但我认为可能是这样的:
FileChooser.ExtensionFilter fcExt=stegoImageSaver.getSelectedExtensionFilter()stringext=fcExt.getExtensions().get(0)。剩下的你得自己试试,没用了。