Question

I've been trying to figure this out for days. I am trying to load a buffered image from my res directory. My folder hierarchy is.

  • MainProjectFolder
    • res
      • my image to be loaded
    • src
      • Logic folder
        • loop.java(my class to pass a string to BufferedImageLoader to be loaded)
      • Graphics Folder
        • BufferedImageLoader.java(converts string to bufferedimage)

However I keep getting a input = null error. How do I point to my image file?

My Loop class

BufferedImageLoader loader = new BufferedImageLoader();
    try{
        spriteSheet = loader.loadImage("/res/sprite_sheet_test.png");

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

My BufferedImageLoaderClass

public BufferedImage loadImage(String path)throws IOException{
    url = this.getClass().getResource(path);
    image = ImageIO.read(url);
    newImage = new BufferedImage(image.getWidth(), image.getHeight(),
            BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = newImage.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return newImage;
}

Thanks for your help!!

Was it helpful?

Solution

Given that the folder res is defined as a resource folder in your project and put on class path (and indeed, contains the file sprite_sheet_test.png), this should work:

loader.loadImage("/sprite_sheet_test.png");

Note the leading /, to make sure the image is loaded from the resource root. Without it, the resource would be resolved relative to the package of your BufferedImageLoader class.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top