org.jscience.media.pictures.filters
Class QuantizeFilter

java.lang.Object
  extended by java.awt.image.ImageFilter
      extended by org.jscience.media.pictures.filters.WholeImageFilter
          extended by org.jscience.media.pictures.filters.QuantizeFilter
All Implemented Interfaces:
java.awt.image.ImageConsumer, java.io.Serializable, java.lang.Cloneable

public class QuantizeFilter
extends WholeImageFilter
implements java.io.Serializable

A filter which quantizes an image to a set number of colors - useful for producing images which are to be encoded using an index color model. The filter can perform Floyd-Steinberg error-diffusion dithering if required. At present, the quantization is done using an octtree algorithm but I eventually hope to add more quantization methods such as median cut. Note: at present, the filter produces an image which uses the RGB color model (because the application it was written for required it). I hope to extend it to produce an IndexColorModel by request.

See Also:
Serialized Form

Field Summary
protected static int[] matrix
          Floyd-Steinberg ditherin gmatrix.
 
Fields inherited from class org.jscience.media.pictures.filters.WholeImageFilter
canFilterIndexColorModel, defaultRGBModel, inBytePixels, inPixels, originalSpace, transformedSpace
 
Fields inherited from class java.awt.image.ImageFilter
consumer
 
Fields inherited from interface java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
Constructor Summary
QuantizeFilter()
           
 
Method Summary
 boolean getDither()
          Return the dithering setting
 int getNumColors()
          Get the number of colors to quantize to.
 boolean getSerpentine()
          Return the serpentine setting
 void imageComplete(int status)
          DOCUMENT ME!
 void quantize(int[] inPixels, int[] outPixels, int width, int height, int numColors, boolean dither, boolean serpentine)
          DOCUMENT ME!
 void setDither(boolean dither)
          Set whether to use dithering or not.
 void setNumColors(int numColors)
          Set the number of colors to quantize to.
 void setSerpentine(boolean serpentine)
          Set whether to use a serpentine pattern for return or not.
 java.lang.String toString()
          DOCUMENT ME!
 
Methods inherited from class org.jscience.media.pictures.filters.WholeImageFilter
setColorModel, setDimensions, setPixels, setPixels, transformSpace
 
Methods inherited from class java.awt.image.ImageFilter
clone, getFilterInstance, resendTopDownLeftRight, setHints, setProperties
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

matrix

protected static final int[] matrix
Floyd-Steinberg ditherin gmatrix.

Constructor Detail

QuantizeFilter

public QuantizeFilter()
Method Detail

setNumColors

public void setNumColors(int numColors)
Set the number of colors to quantize to.

Parameters:
numColors - the number of colors. The default is 256.

getNumColors

public int getNumColors()
Get the number of colors to quantize to.

Returns:
the number of colors.

setDither

public void setDither(boolean dither)
Set whether to use dithering or not. If not, the image is posterized.

Parameters:
dither - true to use dithering

getDither

public boolean getDither()
Return the dithering setting

Returns:
the current setting

setSerpentine

public void setSerpentine(boolean serpentine)
Set whether to use a serpentine pattern for return or not. This can reduce 'avalanche' artifacts in the output.

Parameters:
serpentine - true to use serpentine pattern

getSerpentine

public boolean getSerpentine()
Return the serpentine setting

Returns:
the current setting

quantize

public void quantize(int[] inPixels,
                     int[] outPixels,
                     int width,
                     int height,
                     int numColors,
                     boolean dither,
                     boolean serpentine)
DOCUMENT ME!

Parameters:
inPixels - DOCUMENT ME!
outPixels - DOCUMENT ME!
width - DOCUMENT ME!
height - DOCUMENT ME!
numColors - DOCUMENT ME!
dither - DOCUMENT ME!
serpentine - DOCUMENT ME!

imageComplete

public void imageComplete(int status)
DOCUMENT ME!

Specified by:
imageComplete in interface java.awt.image.ImageConsumer
Overrides:
imageComplete in class java.awt.image.ImageFilter
Parameters:
status - DOCUMENT ME!

toString

public java.lang.String toString()
DOCUMENT ME!

Overrides:
toString in class java.lang.Object
Returns:
DOCUMENT ME!