2016-05-30 5 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.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 
    } 
} 
+1

Это решение, но для этого случая оно требует ненужной копии памяти. Пожалуйста, см. Ответ Fabian. –

Смежные вопросы