Class PaletteBuilder
- java.lang.Object
-
- com.github.jaiimageio.impl.common.PaletteBuilder
-
public class PaletteBuilder extends java.lang.Object
This class implements the octree quantization method as it is described in the "Graphics Gems" (ISBN 0-12-286166-3, Chapter 4, pages 297-293)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
PaletteBuilder.ColorNode
The node of color tree.
-
Field Summary
Fields Modifier and Type Field Description protected int
currLevel
protected int
currSize
protected static int
MAXLEVEL
maximum of tree depthprotected int
maxNodes
protected int
numNodes
protected PaletteBuilder.ColorNode[]
palette
protected PaletteBuilder.ColorNode[]
reduceList
protected int
requiredSize
protected PaletteBuilder.ColorNode
root
protected java.awt.image.RenderedImage
src
protected java.awt.image.ColorModel
srcColorModel
protected java.awt.image.Raster
srcRaster
protected PaletteBuilder.ColorNode
transColor
protected int
transparency
-
Constructor Summary
Constructors Modifier Constructor Description protected
PaletteBuilder(java.awt.image.RenderedImage src)
protected
PaletteBuilder(java.awt.image.RenderedImage src, int size)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
buildPalette()
static boolean
canCreatePalette(java.awt.image.RenderedImage image)
Returnstrue
if PaletteBuilder is able to create palette for given rendered image.static boolean
canCreatePalette(javax.imageio.ImageTypeSpecifier type)
Returnstrue
if PaletteBuilder is able to create palette for given image type.static java.awt.image.IndexColorModel
createIndexColorModel(java.awt.image.RenderedImage img)
Creates an palette representing colors from given imageimg
.static java.awt.image.RenderedImage
createIndexedImage(java.awt.image.RenderedImage src)
Creates an image representing given imagesrc
usingIndexColorModel
.
protected int
findColorIndex(PaletteBuilder.ColorNode aNode, java.awt.Color aColor)
protected int
findPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)
protected PaletteBuilder.ColorNode
freeTree(PaletteBuilder.ColorNode aNode)
protected int
getBranchIndex(java.awt.Color aColor, int aLevel)
protected java.awt.image.IndexColorModel
getIndexColorModel()
protected java.awt.image.RenderedImage
getIndexedImage()
private java.awt.Color
getSrcColor(int x, int y)
protected PaletteBuilder.ColorNode
insertNode(PaletteBuilder.ColorNode aNode, java.awt.Color aColor, int aLevel)
protected void
reduceTree()
-
-
-
Field Detail
-
MAXLEVEL
protected static final int MAXLEVEL
maximum of tree depth- See Also:
- Constant Field Values
-
src
protected java.awt.image.RenderedImage src
-
srcColorModel
protected java.awt.image.ColorModel srcColorModel
-
srcRaster
protected java.awt.image.Raster srcRaster
-
requiredSize
protected int requiredSize
-
root
protected PaletteBuilder.ColorNode root
-
numNodes
protected int numNodes
-
maxNodes
protected int maxNodes
-
currLevel
protected int currLevel
-
currSize
protected int currSize
-
reduceList
protected PaletteBuilder.ColorNode[] reduceList
-
palette
protected PaletteBuilder.ColorNode[] palette
-
transparency
protected int transparency
-
transColor
protected PaletteBuilder.ColorNode transColor
-
-
Method Detail
-
createIndexedImage
public static java.awt.image.RenderedImage createIndexedImage(java.awt.image.RenderedImage src)
Creates an image representing given imagesrc
usingIndexColorModel
. Lossless conversion is not always possible (e.g. if number of colors in the given image exceeds maximum palette size). Result image then is an approximation constructed by octree quantization method.
- Throws:
java.lang.IllegalArgumentException
- ifsrc
isnull
.java.lang.UnsupportedOperationException
- if implemented method is unable to create approximation ofsrc
andcanCreatePalette
returnsfalse
.- See Also:
createIndexColorModel(RenderedImage)
,canCreatePalette(RenderedImage)
-
createIndexColorModel
public static java.awt.image.IndexColorModel createIndexColorModel(java.awt.image.RenderedImage img)
Creates an palette representing colors from given imageimg
. If number of colors in the given image exceeds maximum palette size closest colors would be merged.- Throws:
java.lang.IllegalArgumentException
- ifimg
isnull
.java.lang.UnsupportedOperationException
- if implemented method is unable to create approximation ofimg
andcanCreatePalette
returnsfalse
.- See Also:
createIndexedImage(RenderedImage)
,canCreatePalette(RenderedImage)
-
canCreatePalette
public static boolean canCreatePalette(javax.imageio.ImageTypeSpecifier type)
Returnstrue
if PaletteBuilder is able to create palette for given image type.- Parameters:
type
- an instance ofImageTypeSpecifier
to be indexed.- Returns:
true
if thePaletteBuilder
is likely to be able to create palette for this image type.- Throws:
java.lang.IllegalArgumentException
- iftype
isnull
.
-
canCreatePalette
public static boolean canCreatePalette(java.awt.image.RenderedImage image)
Returnstrue
if PaletteBuilder is able to create palette for given rendered image.- Parameters:
image
- an instance ofRenderedImage
to be indexed.- Returns:
true
if thePaletteBuilder
is likely to be able to create palette for this image type.- Throws:
java.lang.IllegalArgumentException
- ifimage
isnull
.
-
getIndexedImage
protected java.awt.image.RenderedImage getIndexedImage()
-
getSrcColor
private java.awt.Color getSrcColor(int x, int y)
-
findColorIndex
protected int findColorIndex(PaletteBuilder.ColorNode aNode, java.awt.Color aColor)
-
buildPalette
protected void buildPalette()
-
insertNode
protected PaletteBuilder.ColorNode insertNode(PaletteBuilder.ColorNode aNode, java.awt.Color aColor, int aLevel)
-
getIndexColorModel
protected java.awt.image.IndexColorModel getIndexColorModel()
-
findPaletteEntry
protected int findPaletteEntry(PaletteBuilder.ColorNode aNode, int index, byte[] red, byte[] green, byte[] blue)
-
getBranchIndex
protected int getBranchIndex(java.awt.Color aColor, int aLevel)
-
reduceTree
protected void reduceTree()
-
freeTree
protected PaletteBuilder.ColorNode freeTree(PaletteBuilder.ColorNode aNode)
-
-