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
Applets
|
|