如何将文件转换为图像以便在Java中的ImageView中显示?

Phi*_*yyy 6 java javafx image filechooser

我试图从文件选择器中选择后立即显示图像文件.文件选择器仅限于.png和.jpg文件,所选文件存储在File类型的变量中.要做到这一点,我已经设置了一个ImageView,我希望用这个新文件设置图像只是问题是它是File not Image类型.

怎么能实现这一目标?代码到目前为止......

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...");
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jam*_*s_D 8

你可以简单地创建一个图像

Image image = new Image(selectedFile.toURI().toString());
Run Code Online (Sandbox Code Playgroud)

然后把它放在ImageView:

previewPicture.setImage(image);
Run Code Online (Sandbox Code Playgroud)

其他构造函数可以更好地控制加载图像所需的资源.如果要强制图像为特定大小,可以在加载时调整大小,如果用户选择大图像但您只想显示缩小版本,则可以节省内存.此外,加载大图像可能需要一些时间,因此您不应将其加载到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
);
Run Code Online (Sandbox Code Playgroud)

请参阅其他可用构造函数的文档.