Sun Java Solaris Communities My SDN Account
 
JAI

Java(TM) Advanced Imaging API 1.1.2_01 Bugs

 

These are the known issues for the current JavaTM Advanced Imaging 1.1.2_01 release as of the time of writing of this file. Up to date information may be obtained by searching the Bug Database on Category "JAI is Advanced Imaging" and State "Open". To use the Bug Database you need to be registered with the Java Developer Connection.

These issues are listed in order of bug ID. 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 or vote for it yourself in the Bug Database.

To see which bugs have been fixed in JAI 1.1.2_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 Implementation Bugs

These bugs are due to code within JAI itself.

Bugs

Bug IDSynopsis
4231474Rotate with BL/BC and border extended generates shifted image edges
4435009BilinearScaleTest medialib and java version generates different images
4453915Localized JAI operation names are not case-insensitive
4453918auto-install of JAI 1.1 over 1.0.2 problem
4460746PixelAccessor(RenderedImage) constructor specification may be misleading
4489762Error decoding 4-bit RLE compressed BMP image
4503613InterpolationBilinear may cause overflow for integer type
4505742SubsampleBinaryToGrayDescriptor operation specification is flawed.
4505744SubsampleBinaryToGray gives incorrect results if xScale*yScale < 1.0/256.0
4514367javax.media.jai.JAI.getBuildVersion() is broken in applets
4527703finishedLines/Pixels are not documented well
4548827Minor typo in GradientMagnitudeDescriptor
4620706Histogram threshold computation methods documentation is inadequate
4628212Unregistering an image factory is incorrect when preferences are present.
4638861Composite operator doesn't generate pre-multiplied ARGB image
4647648FPX images acquired over IIP have incorrect color component mapping
4653693Warp documentation needs improvement
4659779Argument 'element' in ImageFunction.getElements(...) is not documented
4664747When SerializableRenderedImage is serialized again, NPE is thrown
4665080When rendering Renderable image generated from gif, the color index was lost
4667086The "invert" operation causes out of bounds exception on large images.
4668327RasterAccessor.findCompatibleTags() incorrect for bilevel dst & non-bilevel src
4690773Multipage TIFF file decoding is not thread safe
4713596TIFF LZW decoder generates wrong number of uncompressed sample in some case
4718766PixelAccessor.getPixels behavior not specified for various values of isDest arg
4720195Resulting image from RenderableOp.createScaledRendering has incorrect dimensions
4737768Properties like tile_cache_key should not be copied from source to destination
4737803Renderable composite does not work with Remote Imaging
4741153Minor javadoc problems in TileCache specification
4775530Tiles from the "fileload" operation are not recycled
4825225setClip seems to be broken on Graphics2D object obtained from TiledImage
4828493TiledImage does not process invalid region event when region object is null
4850933PNMImageEncoder has problem when the tile offset is not at the image corner
4850965LookupTableJAI.getFloatData(1) generates different exception on current JAI
4855142ColorQuantizerRIF I18N problem
4857245SubsampleAverage throws ArrayIndexOutOfBoundsException
4862755IntegerSequence constructor ignore the range
4878790Should not assume DataBuffer subclass based on DataBuffer type
4889578Inconsistent on the float value in IHSColorSpace and ColorConvert
4899296Erosion on bilevel image fails when kernel height is smaller then the width
4904435TIFF Codec generate larger compressed image than TIFF plugin
4906854"Affine" operation with bilinear interp. and ImageLayout hint crash medialib
4906856Problem with Histogram operator with polygon ROI on tiled images (TIFF files)
4906964The results of java and native version for subsample average are different
4908419Loading transparent GIF and storing as JPEG results in a corrupt image.
4909122ColorQuantizer operation emits image property with incorrect name
4909129ErrorDiffusion throws ArrayIndexOutOfBoundsException
4916119"Composite" operation in renderable mode does not accept null "source2Alpha"
4918956TIFF decoder does not support RGB color, 4 bits per sample images.
4931727TIFFDirectory should unsigned 32 bit equivalent for data offsets
4934121Probable bug in IHS->RGB conversion
4936736Native version of transpose changes the minX of the image when flip horizontal
4944464Convolution using mediaLib returns a blank image
4945743TIFF decoder ignores lsb-to-msb fill order for all but fax images
4957501ErrorDiffusion only supports up to 256 colors
4974616MlibRotateRIF assigns integer value to float parameters
4979025mapDestPoint() fails for "Rotate" of 90, 180, 270 degrees
4981286ArrayIndexOutOfBoundsException when scaling GIF image
4982347TileCache thrashing may hang op chain
4986288BMP image written with "top down" set to "true" is incorrect
4990552Native exception encountered in "Histogram" operation
4992274"Scale" throws ArrayIndexOutOfBoundsException
4996204The TIFF codec sometimes throws an IllegalArgumentException
5005684GIF ImageDecoder.getNumPages() throws exception
5005714Operation-specified property characteristics should be queryable
5005724Operation-specified property characteristics should have PropertyGenerators
5009010Cannot set ParameterBlockJAI parameter to a DeferredData object
5014427Optimized bilevel erosion throws ArrayIndexOutOfBoundsException
5021785TIFF reader should be robust to datatype errors in FillOrder tag
5023710ROIShape rasterization of Polygon is inaccurate
5023753"BoxFilter" throws exception when no parameters supplied
5023777MlibBinarizeOpImage truncates threshold
5024908"ColorConvert" operation throws Exception when source has an IndexColorModel
5027695In some cases, Rotate calls Scale with invalid parameter block causing Exception
5034086BMPEncoder allows compression to be set for encoding with topDown images
5034146BMPImageReader does not correctly read certain BI_BITFIELDS encoded images
5074509Misleading link and description
5074619mapDestPoint() is incorrect for non-zero rotation
5094349TIFF decoder garbles deflate-compressed RGB data
5095110Blue hues lost during ColorConvert via IHS
5095479MemoryCacheSeekableStream appends extra bytes to end of data
5095529ROI.setThreshold() has no effect on ROI instance contains() capability
5096947CMYK TIFF images should be assigned a CMYK ColorModel
5098627PointOpImage should set created SampleModel data type based on sample size
5099236Erode and Dilate over Binary Images throws exception
5102837PlanarImage.toString() should refer to instance methods not instance variables

Requests for Enhancement

Bug IDSynopsis
4220980Inconsistent data types for affine, crop, point ops etc. (float vs double)
4260474JAI 1.0 BMP Encoder only saves Version 3.0
4301684JAI jpeg codec cannot process abbreviated streams
4310251FlashPix reader throws AI exception
4382579Add a hint to specify critical or non-critical array transfers with JNI
4388309considering indexed color model; ScaleOpImage bounds
4397791ImageCodec.createComponentColorModel() returns null for SHORT data type.
4404148white space in applet with scale (nearest) operator
4404563applet blinks with white painting in the beginning
4423395Use EnumeratedParameter for the "dataType" parameter of the "format" operator
4430307KernelJAI.is{Horizontally,Vertically}Symmetric is never set
4435022Make available example code for native code interface to operators.
4475967JAI javadoc lacks package descriptions
4485617ushort data medialib acceleration overhead still exists for numerous operator
4485633some operators are faster in pure java (medialib overhead may be too big)
4500845InvertOpImage can speed up for Byte and UShort loops
4529967Provide sample code for implementing each type of operation.
4529971Provide a base class for point operations on unions of sources.
4640635TiledImage.set() specification unclear about overwriting of data
4664025TileCodecParameterList constr should not need a ParameterListDescriptor argument
4666852OperationNodes do not react to RenderingChangeEvents of OperationNode parameters
4667080ImageUtil.copyRaster() not optimized to handle bilevel data
4675735Online javadoc should have versions.
4727744Resource strings in OperationDescriptorImpl subclasses should contain # of srcs
4740959Adds convenient methods in KernelJAI to generate the popular kernels
4745234RFE: mediaLibException in convolve operation if kernel size greater than 128x128
4754795WBMP decoder cannot read the attached image
4763599Update PointOpImage to honor the JAI.KEY_REPLACE_INDEX_COLOR_MODEL hint value.
4783727Operations which have no net effect should have minimal overhead
4823151Insufficient exception handling
4823200Make TIFF decoder robust to (comp) images with no strip/tile byte counts field
4827849Enhance PlanarImage.createColorModel() for N-band ComponentSampleModels
4835312The pages on JAI tutorial needs to be updated
4857216getProperty("roi") is slower when the ROI isn't set
4862749RFE: Convenience methods in IntegerSequence
4897382AreaOpImage documentation of BorderExtender handling could be improved.
4909110PlanarImage.createColorModel() should support TYPE_SHORT
4918478Provide programmatic mechanism to detect use of native acceleration
4919665Consider using ImagingListener to hanle all the exception in JAI
4926926Geometric operations should provide a clip range for in-bounds pixels
4927100Operation chain traversal, especially in the forward sense, is cumbersome
4937658JAI should have an operation that composites two images that have alpha channels
4938177Documentation of StatisticsOpImage could be better
4948558Mapping of array indices to matrix indices in Interpolation classes unclear
4954602Document on the deprecated constructors can be improved
4964400Add a IHSColor class
4970022TileCache should not cache tiles which exceed its memory capacity
4990539PNG image decoder does not return a procedural image
4994545mediaLib exceptions should be re-thrown as ImagingExceptions
5024397In IHSColorSpace javadoc change tg() to tan()
5027670Provide info reg. sources for operations that take arbitrary number of sources
5029451The "filestore" operation does not close the file descriptor for the output file
5032347JAI installer should use PACK200
5037226MediaLibAccessor should use ImagingListener from default JAI instead of println
5064751Provide API for driving a tracking image operation progress
5073090JAI Image I/O Tools should have a webpage dedicated to it on the JAI web site.
5074624"Piecewise" is not accelerated for USHORT data
5086246The JPEG encoder reserves a lot of memory to convert large images

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.2_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.
    • 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.