Sun Java Solaris Communities My SDN Account
 

Java[tm] Advanced Imaging API 1.1.1_01 Known Bugs/Issues

 
JavaTM Advanced Imaging API
Advanced Imaging API 1.1.1_01
Known Issues and Bugs

FAQ | Interest Group

These are some of the known bugs for the current JavaTM Advanced Imaging 1.1.1_01 release. They are not in any priority order and we do not promise that all will get fixed before the next release. If a bug listed below is affecting your work with the JavaTM Advanced Imaging API, please let us know so we may assign it the proper priority.

To see which bugs have been fixed in JAI 1.1.1_01, please refer to the README page.

To report a bug that is not on this list, please see the Bug Report instructions.

JavaTM Advanced Imaging API Reference Port Bugs

These bugs are due to code within JAI itself.

Core Bugs

  • ColorSpaceJAI and IHSColorSpace incorrectly interpret the sRGB color space specification. Incorrect C.I.E. XYZ-to-RGB linear conversion matrices are specified in ColorSpaceJAI. The methods CIEXYZToRGB() and RGBToCIEXYZ() in ColorSpaceJAI use these matrices which differ slightly from those in the sRGB specification in that they use more decimals of precision. These methods also do not use the non-linear portion of sRGB.
  • OpImage.getFormatTags() and RasterAccessor.findCompatibleTags() do not sufficiently document the structure of the returned array: the first N indices correspond to the indices of the respective source and the last index corresponds to the destination.
  • Unregistering an image factory may indirectly cause an exception if the mode against which the image factory is registered supports preferences among image factories. The exception would not occur until an operation node was created for the operation in question.
  • Some FlashPix images acquired over IIP may have incorrect color component mapping.
  • RasterAccessor.findCompatibleTags() incorrect for bilevel destination and non-bilevel source(s).
  • Using interpolation types other than nearest neighbor may cause the "Crop" operation to fail in renderable mode with an IllegalArgumentException with the message "The rectangular crop area must not be outside the image".
  • InterpolationBilinear may cause overflow for integer data type.
  • The specification of WarpGrid does not indicate that points outside the bounds of the cells defining the grid warp will be mapped to the source image using the identity transformation.
  • OperationNodes do not react to RenderingChangeEvents emitted by operation parameters.
Operator Bugs

  • "SubsampleBinaryToGray" operation gives incorrect results if xScale*yScale < 1.0/256.0. This is due to the required number of gray levels overflowing the range of the destination data type which is at present specified to be byte.
  • "BandCombine" operation does not document matrix parameter properly. It does not state what the extra column in the matrix is for. The contents of the extra column is in fact a constant value to be added to the linear combination of the source bands represented by the other columns in the same row.
  • Operations which are accelerated by means of operating on the image colormap instead of processing the data directly, e.g., "Lookup", "Rescale", etc., may cause incorrect results for bilevel images which are interpreted as "white-is-zero".
  • "Composite" operation does not set the alpha premultiplied flag correctly when the alphaPremultiplied parameter is true.
  • "Warp" variants do not set destination bounds. Other geometric operations set the destination image bounds based on the transformation if no ImageLayout hint is provided. "Warp" destinations merely inherit the bounds of their source image.
  • It is not possible to specify to geometric operations the background value desired in the portion of the destination image which backward maps outside the source image bounds.
  • Geometric operations do not expand IndexColorModel image data which causes incorrect results to be produced for non-nearest neighbor interpolation. A workaround is to expand the index color image using the "Lookup" operation prior to geometric transformation.
  • "Extrema" operation should provide an option to save the locations of extremal pixel values.
Remote Imaging Bugs

  • Remote "FileStore" results in IllegalArgumentException for path existing only on server. Possible workarounds include 1) using a RemoteRenderedOp directly to instantiate the remote "FileStore" instead of using RemoteJAI.create() or 2) ensuring that the path on the server is visible on the client.
  • Re-serializing a deserialized SerializableRenderedImage provokes a NullPointerException.
  • The "Composite" operation does not work in renderable mode in remote imaging.
Codec Bugs

  • The JAI JPEG decoder cannot process abbreviated streams. The JAI JPEG codec currently supports creating abbreviated streams, both tables-only and image-only, but there is no way to read these streams back in. The code always wants to create an image from the stream, even when its a tables-only stream. The workaround is to use the com.sun.image.codec.jpeg JPEG decoder directly.
  • The BMP decoder has been observed to throw an ArrayIndexOutOfBoundsException for certain input images which are compressed using RLE4 compression.
  • Attempting to load some FlashPix images may result in an ArrayIndexOutOfBoundsException being thrown.

JavaTM 2D Bugs Affecting the JavaTM Advanced Imaging API

These are known JavaTM 2D bugs which may cause problems using JAI or be manifested via JAI.

  • The isCompatibleSampleModel() method in java.awt.image.ComponentColorModel manifests different bugs in different versions of Sun Microsystems' J2SE. In J2SE 1.2 it returns false if the SampleModel is a ComponentSampleModel which is the opposite of what it should do. This renders J2SE 1.2* unusable with JAI 1.1 or greater. In J2SE 1.3, it does not verify that the number of SampleModel bands matches the number of ColorModel components. This latter problem has been fixed in J2SE 1.4.

Additional Problems/Limitations of Note

These are items which are not bugs per se. Some of this information is duplicated from the README page.

Codecs

  • TIFF Codec

    Java Advanced Imaging 1.1.1_01 TIFF codec supports a large portion of the TIFF specification including baseline TIFF and several extensions. The implementation does however have the following limitations:

    • The TIFF encoder does not support LZW compression for the usual reason.
    • Planar format (PlanarConfiguration field has value 2) is not supported for decoding or encoding.
  • BMP Codec

    • Only the default RGB color space is supported.
    • Alpha channels are not supported by the BMP encoder.
    • The BMP encoder supports only version 3, i.e., does not support versions 2 or 4. This is despite the fact that the desired version number may be set via BMPEncodeParam.setVersion() and that BMPEncodeParam defines the constants VERSION_2 and VERSION_4.

Applets

  • Solaris

    Automatic installation does not work with JavaTM Plug-In versions prior to 1.3.1.

Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.