Scope of Image in 2.2?

Dr. Michael Paus mp at
Wed Apr 25 03:04:12 PDT 2012

Again ++1
We are not using JAI because we use some in-house tooling instead (which 
we would have to
rewrite in a JFX environment) but the mentioned functionality is exactly 
what we need too.

When designing a new canvas node it might also be useful to see what 
others have done just
to get some ideas.

Am 25.04.2012 11:15, schrieb Martin Desruisseaux:
> Le 21/04/12 15:48, Dr. Michael Paus a écrit :
>> +1
>> Martin describes exactly the use-case that I have in my daily work 
>> too. I might add that the indexed
>> image data we work with can easily exceed 1 GB. We read the raw bytes 
>> of the currently relevant portion
>> of it and render it directly via a BufferedImage with an appropriate 
>> IndexColorModel. This is very efficient
>> and any alternative would be much slower and would consume a lot more 
>> memory.
> Right. Terabytes of images are becoming more and more commons too. 
> While processing power and storage capabilities increase fast, the 
> amount of images from satellites is increasing as fast. I think that 
> Earth observation will continue to stretch computers to their limit 
> for the foreseeable future.
> Continuing on my previous email listing things from existing API that 
> may be nice to preserve, there is some other proposals from Java 
> Advanced Imaging 
> (
> ---------------------
> Stores the result of an image operation. The cache content may be 
> flushed at any time, so only data that can be re-computed on demand 
> are cached there. The default implementation caches in memory, but 
> developers can override e.g. for flushing tiles to temporary files on 
> disk.
> -------------------
> Iterates over the pixel in an image. Such iterations are not so easy 
> when an image has more than one tile. The iterators insulate the users 
> from this complexity. Note: the JAI iterator interfaces could probably 
> be simpler.
> -----------------
> A more generic way than AffineTransform for performing images 
> resampling. Warp is the base class, and WarpAffine is one subclass 
> among others (admittedly the most important one). Another useful 
> subclass is WarpGrid, which will be needed for the map component if it 
> is planed to support map projections. Note that JAI has a lot of 
> redundancies like "Translate", "Scale" and "Affine" operations 
> duplicating the work of WarpAffine. Such duplication could be avoided, 
> assuming that the JavaFX implementation would detect by itself when a 
> WarpAffine is just a translation, or just a scale (for optimization 
> purposes).
> ------------------------
> Actually any mechanism allowing the developer to provide his own 
> interpolation algorithm would fit. "Nearest neighbourhood", "Bilinear" 
> and "Bicubic" are probably sufficient for a standard library, but more 
> specialized interpolation methods exist. All JAI operations that may 
> interpolate pixel values, especially the above-cited Warp operation, 
> accept an arbitrary Interpolation object.
>     Martin

Dr. Michael Paus, Chairman of the Java User Group Stuttgart e.V. (JUGS).
For more information visit

More information about the openjfx-dev mailing list