我试图从文件选择器中选择图像文件后立即显示它。文件选择器仅限于.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..."); } }
您可以简单地用
Image image = new Image(selectedFile.toURI().toString());
然后将其放在ImageView:
ImageView
previewPicture.setImage(image);
其他构造函数提供了对加载图像所需资源的更多控制。如果要强制将图像设置为特定大小,则可以在加载时调整其大小,如果用户选择大图像,而只想显示缩小的版本,则可以节省内存。此外,加载大图像可能会花费一些时间,因此您不应将其加载到UI线程上。Image采用字符串形式的URL 的构造函数可以选择在后台线程中自动加载图像。以下内容可强制宽度和高度均不超过240像素(同时保持原始宽高比),并在背景中加载图像(因此不会阻塞UI):
Image
Image image = new Image(selectedFile.toURI().toString(), 240, // requested width 240, // requested height true, // preserve ratio true, // smooth rescaling true // load in background );
请参阅文档以获取其他可用的构造函数。