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[]
matrix
Floyd-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.boolean
getDither()
Return the dithering settingint
getNumColors()
Get the number of colors to quantize to.boolean
getSerpentine()
Return the serpentine settingvoid
quantize(int[] inPixels, int[] outPixels, int width, int height, int numColors, boolean dither, boolean serpentine)
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()
-
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:WholeImageFilter
Actually filter the pixels.- Specified by:
filterPixels
in 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:
toString
in classjava.lang.Object
-
-