Java - 使用ImageIO从资源位置加载图像

时间:2015-08-18 21:54:25

标签: java resources classloader javax.imageio

我一直在尝试从我的资源中加载图像"在过去几个小时我的项目中的文件夹,任务似乎很简单,但我一直在拉我的头发。

我目前的代码:

private Image bg_img;
ClassLoader classLoader = getClass().getClassLoader();
bg_img = ImageIO.read(classLoader.getResource("imgo.jpg"));

然而,我一直收到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at com.conquest.gui.MainPanel.<init>(MainPanel.java:80)
at com.conquest.gui.RenderFrame.createControls(RenderFrame.java:40)
at com.conquest.gui.RenderFrame.createFrame(RenderFrame.java:35)
at com.conquest.gui.RenderFrame.<init>(RenderFrame.java:23)
at com.conquest.main.Main.main(Main.java:8)

我尝试了很多事情(以及此处提出的其他问题的建议),但无济于事。

我也尝试添加无效的尾随和斜线。

我尝试了一些建议的代码来查看我的资源位置是否设置正确,这似乎有效:

private String getFile(String fileName) {

        StringBuilder result = new StringBuilder("");

        //Get file from resources folder
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource(fileName).getFile());

        try (Scanner scanner = new Scanner(file)) {

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                result.append(line).append("\n");
            }

            scanner.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

        return result.toString();

      }


      public MainPanel(){
            System.out.println(getFile("test.txt"));        
      }

哪个输出文件的每一行,但我仍然无法获取我的图像......

enter image description here

0 个答案:

没有答案