Class 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 Detail

      • matrix

        protected static final int[] matrix
        Floyd-Steinberg dithering matrix.
    • 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)
      • 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 class WholeImageFilter
        Parameters:
        width - the image width
        height - the image height
        inPixels - the image pixels
        transformedSpace - the output bounds
        Returns:
        the output pixels
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object