2016-05-30 70 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的回答。 –

相關問題