使用JarURLInputStream for JavaFX Image

时间:2015-03-04 12:20:39

标签: java javafx javafx-2

在我的应用程序中我使用Image类JavaFX和InputStream s。 InputStream是通过调用URL.openStream()来提供的,该jar:file:C:/some.jar!/someImage.bmp适用于指向文件的网址。但是,如果我的网址为 InputStream stream = url.openStream(); Image image = new Image(stream); StackPane stackLayout = new StackPane(); stackLayout.getChildren().add(new ImageView(image)); Stage stage= new Stage(new Scene(stackLayout)); stage.setScene(scene); stage.show(); ,则无法正确加载图片。以下是我正在解决的片段:

Files.copy(stream, new File("copy-image.bmp").toPath());

我使用

验证了网址是否正确
Image

导致jar存档中的文件副本。我认为JavaFX的2.2.67-b01类有问题(我正在使用{{1}})。

1 个答案:

答案 0 :(得分:2)

经过一些测试后,我发现这显然是(至少)JavaFX 2.2.67-b01中的一个错误。问题与流无关,而与要加载的图像的位深度无关:24位图像可以毫无问题地加载,而尝试加载32位图像会导致错误。

切换到JDK 1.8.0_31附带的JavaFX 8.0.31-b13可以解决问题。