-3

こんにちは、迷惑なエラーが発生しています。常に、画像を読み込めないときに入力 == null エラーが発生します。これがコードです。

  package Graphics;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

public class spritesheet {
    public String path;
    public int width;
    public int height;
    public int[] pixels;


        public spritesheet(String path){
            BufferedImage image = null;

            try {
                image =
                        ImageIO.read(spritesheet.class.getResourceAsStream(path));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(image == null){
                return;
            }
            this.path = path;
            this.width = image.getWidth();
            this.height = image.getHeight();

            pixels = image.getRGB(0, 0, width, height, null ,0  , width);
        }           
        public int[][] getsprite(int x, int y, int[][] pixels){
            int i = 0;
            for(int xx = 0;xx< 7;x++){
                for(int yy = 0; yy< 7;yy++){
                    pixels[xx][yy] = this.pixels[i];
                    i++;
                }
            }
            return pixels;
        }
    }   

確認しましたが、ディレクトリは完全に正しいです。

エラー

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at Graphics.spritesheet.<init>(spritesheet.java:20)
    at Tile.Tile.<init>(Tile.java:9)
    at Tiles.Wall.<init>(Wall.java:8)
    at Tiles.tiles.<init>(tiles.java:6)
    at Core.core.<init>(core.java:27)
    at Core.core.main(core.java:140)
4

1 に答える 1

1

FileImageInputStreamファイルの読み取りに使用

ImageIO.read(new FileImageInputStream(new File(path)));

したがって、絶対パス(C:\test.png)を使用すると、クラスパスgetresourceAsStream()からリソースをロードするために使用されるものを使用しないでください。次に、パスのスラッシュをエスケープする必要はありません。またはを使用します。C:/testfile.pngC:\\testfile.png

参考:
ImageIO#read(javax.imageio.stream.ImageInputStream)

于 2013-07-04T19:54:37.543 に答える