java - 将 JarURLInputStream 用于 JavaFX 图像

标签 java javafx javafx-2

在我的应用程序中,我将 JavaFX 的 Image 类与 InputStream 一起使用。 InputStream 是通过调用 URL.openStream() 提供的,它非常适合指向文件的 URL。但是,如果我的 URL 格式为 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();

我使用以下方法验证了 URL 是否正确

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

这会在 jar 存档中生成文件的副本。我认为 JavaFX 的 Image 类有问题(我使用的是 2.2.67-b01)。

最佳答案

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

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

关于java - 将 JarURLInputStream 用于 JavaFX 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854382/

相关文章:

javafx - JavaFX 2.0:结束阶段(窗口)

JavaFX BarChart 实现 - 为什么使用 StackPanes 作为条形图?

java - javafx 中使用 TableView 进行多重过滤

java - Spring @Around > 参数的行为

java - 聊天程序卡住 JFrame

java - Zimbra 邮件服务器 - 如何为 zimbra 邮件服务器创建身份验证证书

javafx-2 - 如何创建从一种形状到另一种形状的变形效果?

java - 通过 JSP 将变量传递给 Java?

controller - JavaFX TabPane - 每个选项卡一个 Controller

javafx-2 - 在 JavaFX 中,绑定(bind)是 Action 监听器的替代方法吗?