'ImageIO.read returns NULL, with no errors
The following code seems not to work, even though the file appears to be found just fine.
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");
}
}
Thanks in advance for any help.
Edit: The result is me attempting to Graphics.drawImage(images[0]);, and it giving me a null pointer exception. This code here completes fine.
Edit: Changed moved the if(!file.exists()) as suggested, and wrapped the file in an input stream.
Solution 1:[1]
ImageIO.read(file); will return null if no registered ImageReader is found. Please check whether you have registered any ImageReader.
I think this code snippet could help you
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
You just need to wrap the file into an FileInputStream and then pass it to read()
Solution 2:[2]
ImageIO.read(*...) will only load these image types GIF, PNG, JPEG, BMP, and WBMP.
Any other image type will return null without error.
reference: http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
I do realize this is not a solution to the specific original problem but it is a solution to the question asked.
Solution 3:[3]
Try wrap you InputStream into BufferedInputStream:
fis = new FileInputStream(file); ==> new BufferedInputStream(new FileInputStream(file));
Solution 4:[4]
Use new File(getClass().getResource("tiles\\"+i+".bmp"));
Solution 5:[5]
Add the following dependencies:
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.4.0</version>
</dependency>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Fay Boisam |
| Solution 2 | Irrationalkilla |
| Solution 3 | Ahmed MANSOUR |
| Solution 4 | MichaelJohn |
| Solution 5 | AM13 |
