Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageIO.read返回NULL,没有错误_Java_Image - Fatal编程技术网

Java ImageIO.read返回NULL,没有错误

Java ImageIO.read返回NULL,没有错误,java,image,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+

下面的代码似乎不起作用,即使该文件看起来很好

    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");
        }
    }
images=newbufferedimage[32];
FileInputStream fis=null;
对于(int i=0;i<32;i++){
File File=新文件(“tiles\\”+i+“.bmp”);
如果(!file.exists()){
System.out.println(“文件”+i+“失败”);
}
试试{
fis=新文件输入流(文件);
}catch(filenotfound异常){
系统错误打印项次(e+“”+i);
}
试试{
图像[i]=图像读取(fis);
}捕获(IOE){
系统错误打印项次(e+“”+i);
}
if(图像[i]==null){
System.out.println(“图像”+i+“失败”);
}
}
提前感谢您的帮助

编辑:结果是我尝试使用Graphics.drawImage(图像[0]);,它给了我一个空指针异常。这里的代码完成得很好

编辑:按建议移动if(!file.exists()),并将文件包装到输入流中。

ImageIO.read(文件)图像阅读器,strong>将返回null。请检查您是否已注册任何图像阅读器

我认为这个代码片段可以帮助您

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  
您只需将文件包装到一个文件输入流中,然后将其传递到读取()
ImageIO.read(*…)
将只加载这些图像类型GIFPNGJPEGBMP、和WBMP

任何其他图像类型都将返回
null
,无错误

参考:


我确实意识到这不是针对特定原始问题的解决方案,而是针对所问问题的解决方案。

尝试将InputStream包装到BufferedInputStream中:

fis=新文件输入流(文件);=>
新建BufferedInputStream(新建FileInputStream(文件))

你能描述一下结果吗?胡乱猜测:中的路径不正确……如果(!file.exists())System.out.println(“file”+i+“failed”),为什么不将测试放在这里;在阅读之前?我可能仍然没有正确地做这件事,但我所做的是不成功的。我更改了上面的代码以显示更改的内容。你能说出磁盘中的图像文件名吗?@Naberius你能说出磁盘中的图像文件名吗?这对我来说非常有效。对不起,周末不能上网。文件名为0.bmp、1.bmp,最多31个。它们也存储在一个名为“tiles”的文件夹中,但从该文件夹中取出后不会发生任何变化。@Naberius然后尝试使用File File=new File(“tiles”+i+“.bmp”);这