I’ve been having some problems with ImageIO, I thought I’d share. First off, it seems to trash the alpha in my images I load and make them opaque in some instances, and on my brother’s Mac, he gets this exception when trying to load any image:
javax.imageio.IIOException: Unknown row filter type (= 11)!
at com.sun.imageio.plugins.png.PNGImageReader.decodePass(PNGImageReader.java:1196)
at com.sun.imageio.plugins.png.PNGImageReader.decodeImage(PNGImageReader.java:1276)
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1362)
at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1530)
at javax.imageio.ImageIO.read(ImageIO.java:1384)
at javax.imageio.ImageIO.read(ImageIO.java:1348)
at com.gamelizard.util.a.a(Unknown Source)
at com.gamelizard.util.GLApplet.e(Unknown Source)
at com.gamelizard.util.GLApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:552)
image: http://www.gamelizard.com/bin/com/gamelizard/util/lizard2.png
javax.imageio.IIOException: Error reading PNG image data
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1370)
at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1530)
at javax.imageio.ImageIO.read(ImageIO.java:1384)
at javax.imageio.ImageIO.read(ImageIO.java:1348)
at com.gamelizard.util.a.a(Unknown Source)
at com.gamelizard.util.GLApplet.e(Unknown Source)
at com.gamelizard.util.GLApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:552)
Caused by: javax.imageio.IIOException: Unknown row filter type (= 11)!
at com.sun.imageio.plugins.png.PNGImageReader.decodePass(PNGImageReader.java:1196)
at com.sun.imageio.plugins.png.PNGImageReader.decodeImage(PNGImageReader.java:1276)
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1362)
... 7 more
Here’s the code that cause the problem
Image src = null;
try {
src = javax.imageio.ImageIO.read(resource);
}
catch (Exception e) {
System.err.println("image: " + resource.toString());
e.printStackTrace();
return null;
}
Here’s code that works fine without ImageIO:
Image src = Toolkit.getDefaultToolkit().createImage(resource);
mt.addImage(src, 0);
try {mt.waitForAll();}
catch (InterruptedException e){
e.printStackTrace();
}
Interesting huh? Using MediaTracker also fixes the exception on Mac OS X.