gpt4 book ai didi

javafx - 从 jar 中加载图像

转载 作者:行者123 更新时间:2023-11-30 08:02:18 26 4
gpt4 key购买 nike

很抱歉问了这样一个初学者问题,但我无法让它工作,而且我也找不到答案。
我想在我的 .jar 文件中有一个图像并加载它。虽然这听起来很简单,但我只能在从 IDE 内部运行时加载图像,但在制作 .jar 后就不能再加载了(感谢谷歌,我能够在 .jar 中获取 .png)。这是我尝试过的:

    BorderPane bpMain = new BorderPane();
String fs = File.separator;

Image imgManikin;
try {
imgManikin = new Image(
Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().toString()+"\\manikin.png");
bpMain.setBottom(new Label(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().toString()+"\\manikin.png"));
} catch (URISyntaxException e) {
imgManikin = new Image(
Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png");
System.out.println(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png");
bpMain.setBottom(new Label(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()+"\\manikin.png"));
}
//Image imgManikin = new Image("file:src\\manikin.png");
ImageView imgvBackground = new ImageView(imgManikin);
imgvBackground.setFitWidth(100);
imgvBackground.setPreserveRatio(true);
bpMain.setCenter(imgvBackground);


primaryStage.setTitle("Kagami");

primaryStage.setScene(new Scene(bpMain, 300, 275));
primaryStage.show();

不用说它没有用。它向我显示了底部的标签和预期的路径,但它的接缝就像路径不对一样。 (我也尝试使用 File.seperator 而不是 \\ 甚至 /,但我每次都得到相同的结果:它告诉我路径但不会加载图像。
我使用的是 Windows 7,IDE 是 IntelliJ,我有最新的 Java 更新。

最佳答案

如果 jar 文件在您的应用程序的类路径中,并且要加载的图像位于 jar 文件的根目录中,则可以通过以下方式轻松加载图像:

URL url = getClass().getResource("/manikin.png");
BufferedImage awtImg = ImageIO.read(url);
Image fxImg = SwingFXUtils.toFxImage(awtImg, new Image());
Image fxImgDirect = new Image(url.openStream());

虽然 ImageIO 返回一个 BufferedImage,但可以使用 SwingUtils 将其转换为 fx Image。但是,首选方法是使用 URL 中的 InputStream 直接创建一个新的 Image 实例。

另见 Load image from a file inside a project folder .如果操作正确,它是从 jar 文件还是本地文件系统加载都没有关系。

关于javafx - 从 jar 中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37054168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com