Java(TM) Advanced Imaging API 1.1.2_01 Bugs

 

These are the known issues for the current Java TM 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 Java TM 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.

Java TM Advanced Imaging API Reference Implementation Bugs

These bugs are due to code within JAI itself.

Bugs

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

Requests for Enhancement

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

Java TM 2D Bugs Affecting the Java TM Advanced Imaging API

These are known Java TM 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 Java TM Plug-In versions prior to 1.3.1.

Left Curve
Java SDKs and Tools
Right Curve
Left Curve
Java Resources
Right Curve
JavaOne Banner