【问题标题】:Load image from a file inside a project folder从项目文件夹中的文件加载图像
【发布时间】:2015-04-21 18:31:48
【问题描述】:

我正在尝试在不使用FileChooser 的情况下从文件加载图像。 文件夹是:

TestProject
-src
--application
---(all_the_classes_i'm_using.java)
-assets
--drawIcon.png

我想在资产文件夹中加载图像。 我试过了:

Image image = new Image("../assets/drawIcon.png")
Image image = new Image(getClass().getResourceAsStream("../assets/drawIcon.png"))

我已经尝试使用字符串路径“/TestProject/assets/drawIcon.png”,但没有。我不明白如何加载这张图片!

【问题讨论】:

  • 试试new Image(getClass().getResource("/assets/drawIcon.png").toExternalForm());
  • assets 文件夹在 classpath 上吗?
  • 永远不要将 .. 与 getResource 一起使用。如果您将应用程序打包在一个 jar 中(这是非常标准的),那么该资源将是可访问的,因为 jar 访问协议无法识别 ..

标签: java javafx


【解决方案1】:

assets目录设置为资源目录,然后从位置“/drawIcon.png”加载图片作为资源:

URL url = getClass().getResource("/drawIcon.png");
Image image = ImageIO.read(url);

如果您想创建 javafx 图像:

Image image = new Image("/drawIcon.png");

在这种情况下,还要将该文件夹标记为资源文件夹。

更多信息在这里:https://docs.oracle.com/javafx/2/api/javafx/scene/image/Image.html

【讨论】:

  • ImageIO.read(...) 返回 java.awt.Image,而不是 javafx.scene.image.Image,因为我认为这里需要(注意标签)。
  • 如何将assets目录设置为资源目录?
  • 取决于您的 IDE / 构建系统。您使用 Intellij Idea 吗?还是行家?
【解决方案2】:

你可以使用 getResource(path).toString(); 路径必须以 / 开头,并且以 src 文件夹中的第一个包开头。

Image img= new Image(getClass().getResource("/path/in/your/package/structure/icon.png").toString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多