문제

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!!

도움이 되었습니까?

해결책

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top