2016-05-30 36 views
1

我有一个实例化的File对象。我知道它包含一个图片格式。我不知道在系统上的文件被放置,除了其它File方法提供给我getPath(), getAbsolutePath()如何从绝对路径创建JavaFX图像?

我的问题是:我怎么能实例与图片一个JavaFX Image对象在我File

+1

见['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-)。 –

+0

非常感谢你:)如果你关心,你可以发表一个被接受的答案,否则我会在以后自己做。 – user2651804

回答

6

File提供检索的URL文件的方法和the Image constructor需要一个URL String

Image imageForFile = new Image(file.toURI().toURL().toExternalForm()); 
+1

重温,我宁愿这个解决方案,因为它不涉及记忆复制作为我的答案。 –

1

组合javax.imageio.ImageIO类(ref)和javafx.embed.swing.SwingFXUtilsref)可以一个 “输入”(即:流,文件,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 
    } 
} 
+1

这是一个解决方案,但对于这种情况,它涉及不必要的内存拷贝。请看fabian的回答。 –

相关问题