Package com.jhlabs.image
Class QuantizeFilter
- java.lang.Object
-
- com.jhlabs.image.AbstractBufferedImageOp
-
- com.jhlabs.image.WholeImageFilter
-
- com.jhlabs.image.QuantizeFilter
-
- All Implemented Interfaces:
java.awt.image.BufferedImageOp,java.lang.Cloneable
public class QuantizeFilter extends WholeImageFilter
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.
-
-
Field Summary
Fields Modifier and Type Field Description protected static int[]matrixFloyd-Steinberg dithering matrix.-
Fields inherited from class com.jhlabs.image.WholeImageFilter
originalSpace, transformedSpace
-
-
Constructor Summary
Constructors Constructor Description QuantizeFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int[]filterPixels(int width, int height, int[] inPixels, java.awt.Rectangle transformedSpace)Actually filter the pixels.booleangetDither()Return the dithering settingintgetNumColors()Get the number of colors to quantize to.booleangetSerpentine()Return the serpentine settingvoidquantize(int[] inPixels, int[] outPixels, int width, int height, int numColors, boolean dither, boolean serpentine)voidsetDither(boolean dither)Set whether to use dithering or not.voidsetNumColors(int numColors)Set the number of colors to quantize to.voidsetSerpentine(boolean serpentine)Set whether to use a serpentine pattern for return or not.java.lang.StringtoString()-
Methods inherited from class com.jhlabs.image.WholeImageFilter
filter, transformSpace
-
Methods inherited from class com.jhlabs.image.AbstractBufferedImageOp
clone, createCompatibleDestImage, getBounds2D, getPoint2D, getRenderingHints, getRGB, setRGB, stringToColor
-
-
-
-
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)
-
filterPixels
protected int[] filterPixels(int width, int height, int[] inPixels, java.awt.Rectangle transformedSpace)Description copied from class:WholeImageFilterActually filter the pixels.- Specified by:
filterPixelsin classWholeImageFilter- Parameters:
width- the image widthheight- the image heightinPixels- the image pixelstransformedSpace- the output bounds- Returns:
- the output pixels
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-