我试图在从文件选择器中选择图像文件后立即显示该图像文件。文件选择器仅限于 .png 和 .jpg 文件,所选文件存储在文件类型的变量中。为此,我设置了一个 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
:
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
);
See the 文档 http://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html对于其他可用的构造函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)