我有一个实例化的File
对象。我知道它包含一个图片格式。我不知道在系统上的文件被放置,除了其它File
方法提供给我getPath(), getAbsolutePath()
等如何从绝对路径创建JavaFX图像?
我的问题是:我怎么能实例与图片一个JavaFX Image
对象在我File
?
我有一个实例化的File
对象。我知道它包含一个图片格式。我不知道在系统上的文件被放置,除了其它File
方法提供给我getPath(), getAbsolutePath()
等如何从绝对路径创建JavaFX图像?
我的问题是:我怎么能实例与图片一个JavaFX Image
对象在我File
?
File
提供检索的URL文件的方法和the Image
constructor需要一个URL String
。
Image imageForFile = new Image(file.toURI().toURL().toExternalForm());
重温,我宁愿这个解决方案,因为它不涉及记忆复制作为我的答案。 –
组合javax.imageio.ImageIO
类(ref)和javafx.embed.swing.SwingFXUtils
(ref)可以一个 “输入”(即:流,文件,URL)转换成一个JavaFX图像。 (为File
)示例代码:
public static Image readImage(File file) {
try {
BufferedImage bimg = ImageIO.read(file);
return SwingFXUtils.toFXImage(bimg, null);
}
catch(IOException e) {
// do something, probably throw some kind of RuntimeException
}
}
这是一个解决方案,但对于这种情况,它涉及不必要的内存拷贝。请看fabian的回答。 –
见['ImageIO.read()'](https://docs.oracle.com/javase/8/docs/api/javax/imageio/ImageIO.html#read-java.io.File - )然后['SwingFXUtils.toFXImage()'](https://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/SwingFXUtils.html#toFXImage-java.awt.image。 BufferedImage的-javafx.scene.image.WritableImage-)。 –
非常感谢你:)如果你关心,你可以发表一个被接受的答案,否则我会在以后自己做。 – user2651804