繁体   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