JDK-6515852 : JPEG Reader throws IllegalArgumentException when setting the dest type to TYPE_3BYTE_BGR
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.imageio
  • Affected Version: 5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2007-01-22
  • Updated: 2011-01-19
  • Resolved: 2007-01-22
Related Reports
Duplicate :  
Description
I am reading a jpeg image which is created by ImageIO by color convering a TYPE_INT_BGR from sRGB colorspace to CS_GRAY color space. When inspecting this image, JPEG Reader returns 2 image types as supported - TYPE_BYTE_GRAY and TYPE_3BYTE_BGR. When I used TYPE_3BYTE_BGR as the destination type, I am getting an IllegalArgumentException saying source and destination bands differ. This is incorrect. The image should be decodable using all image types returned by getImageTypes().

This is reproducible atleast since 1.5 on all platforms.

I have attached a sample image and a test case. Run the testcase passing the attached image on the command line. If you get the following exception, the bug is reproduced.

java.lang.IllegalArgumentException: ImageReadParam num source & dest bands differ!
at javax.imageio.ImageReader.checkReadParamBandSettings(ImageReader.java:2746)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:958)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:915)
at KannanImageIOTest.<init>(KannanImageIOTest.java:107)
at KannanImageIOTest.main(KannanImageIOTest.java:165)

Comments
EVALUATION As far as I can see from the execution log, described problem is specific to the TYPE_BYTE_GRAY destination type, (and TYPE_3BYTE_BGR works fine): ====== execution log ======================== com.sun.imageio.plugins.jpeg.JPEGImageReader@5a9de6 Dest type: TYPE_3BYTE_BGR Setting type specifier as destination - successful Dest type: TYPE_BYTE_GRAY java.lang.IllegalArgumentException: ImageReadParam num source & dest bands differ! at javax.imageio.ImageReader.checkReadParamBandSettings(ImageReader.java:2746) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:958) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:915) at KannanImageIOTest.<init>(KannanImageIOTest.java:92) at KannanImageIOTest.main(KannanImageIOTest.java:168) java.lang.IllegalArgumentException: ImageReadParam num source & dest bands differ! at javax.imageio.ImageReader.checkReadParamBandSettings(ImageReader.java:2746) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:958) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:915) at KannanImageIOTest.<init>(KannanImageIOTest.java:101) at KannanImageIOTest.main(KannanImageIOTest.java:168) java.lang.IllegalArgumentException: ImageReadParam num source & dest bands differ! at javax.imageio.ImageReader.checkReadParamBandSettings(ImageReader.java:2746) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:958) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:915) at KannanImageIOTest.<init>(KannanImageIOTest.java:110) at KannanImageIOTest.main(KannanImageIOTest.java:168) Dest type: TYPE_CUSTOM Skipping TYPE_CUSTOM since it consumes lot of time for painting the image!! DONE ====== end of execution log ===================== So, this problem is the duplicate of 4893408.
22-01-2007