我有一個實例化的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