ImageIO.read返回NULL,没有错误

Nab*_*ius 17 java image

以下代码似乎不起作用,即使文件看起来很好.

    images = new BufferedImage[32];
    FileInputStream fis = null;
    for (int i = 0; i < 32; i++) {
        File file = new File("tiles\\"+i+".bmp");
        if (!file.exists()){
            System.out.println("File  "+i+" failed");
        }
        try { 
            fis = new FileInputStream(file); 
        } catch (FileNotFoundException e) { 
            System.err.println(e + "" + i); 
        }
        try { 
            images[i] = ImageIO.read(fis); 
        } catch (IOException e) { 
            System.err.println(e + "" + i); 
        }
        if (images[i] == null) {
            System.out.println("Image "+i+" failed");
        }
    }
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

编辑:结果是我尝试Graphics.drawImage(images [0]);,它给我一个空指针异常.这段代码完成得很好.

编辑:已更改按照建议移动了if(!file.exists()),并将文件包装在输入流中.

小智 34

ImageIO.read(*...)只会加载这些图像类型GIF,PNG,JPEG,BMPWBMP.

任何其他图像类型将返回null没有错误.

参考:http: //docs.oracle.com/javase/tutorial/2d/images/loadimage.html

我确实意识到这不是特定原始问题的解决方案,但它是问题的解决方案.


Cha*_*har 8

ImageIO.read(文件); 如果未找到已注册的ImageReader,则返回null .请检查您是否注册了任何ImageReader.

我认为这段代码可以帮到你

File file = new File("bear.jpg"); // I have bear.jpg in my working directory  
    FileInputStream fis = new FileInputStream(file);  
    BufferedImage image = ImageIO.read(fis); //reading the image file  
Run Code Online (Sandbox Code Playgroud)

您只需将文件包装到FileInputStream中,然后将其传递给read()