一尘不染

如何将图像文件加载到ImageView?

java

我试图从文件选择器中选择图像文件后立即显示它。文件选择器仅限于.png和.jpg文件,所选文件存储在File类型的变量中。为此,我已经设置了ImageView,并且我希望使用此新文件设置图像,唯一的问题是文件类型不是图像。

如何做到这一点?到目前为止的代码…

    public void fileSelection(){

        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Select Profile Picture");
        fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Image Files", "*.png", "*jpg"));
        File selectedFile = fileChooser.showOpenDialog(null);
        File selectedFileInput = selectedFile;

        if(selectedFile != null) {
            selectedFileOutput.setText("File selected: " + selectedFile.getName());
            previewPicture.setImage();
        } else {
            selectedFileOutput.setText("Please select a profile picture...");
        }
    }

阅读 217

收藏
2020-09-08

共1个答案

一尘不染

您可以简单地用

Image image = new Image(selectedFile.toURI().toString());

然后将其放在ImageView

previewPicture.setImage(image);

其他构造函数提供了对加载图像所需资源的更多控制。如果要强制将图像设置为特定大小,则可以在加载时调整其大小,如果用户选择大图像,而只想显示缩小的版本,则可以节省内存。此外,加载大图像可能会花费一些时间,因此您不应将其加载到UI线程上。Image采用字符串形式的URL
的构造函数可以选择在后台线程中自动加载图像。以下内容可强制宽度和高度均不超过240像素(同时保持原始宽高比),并在背景中加载图像(因此不会阻塞UI):

Image image = new Image(selectedFile.toURI().toString(),
    240, // requested width
    240, // requested height
    true, // preserve ratio
    true, // smooth rescaling
    true // load in background
);

请参阅文档以获取其他可用的构造函数。

2020-09-08