Android APIs
public class

ColorMatrix

extends Object
java.lang.Object
   ↳ android.graphics.ColorMatrix

Class Overview

4x5 matrix for transforming the color and alpha components of a Bitmap. The matrix can be passed as single array, and is treated as follows:

  [ a, b, c, d, e,
    f, g, h, i, j,
    k, l, m, n, o,
    p, q, r, s, t ]

When applied to a color [R, G, B, A], the resulting color is computed as:

   R’ = a*R + b*G + c*B + d*A + e;
   G’ = f*R + g*G + h*B + i*A + j;
   B’ = k*R + l*G + m*B + n*A + o;
   A’ = p*R + q*G + r*B + s*A + t;

That resulting color [R’, G’, B’, A’] then has each channel clamped to the 0 to 255 range.

The sample ColorMatrix below inverts incoming colors by scaling each channel by -1, and then shifting the result up by 255 to remain in the standard color space.

   [ -1, 0, 0, 0, 255,
     0, -1, 0, 0, 255,
     0, 0, -1, 0, 255,
     0, 0, 0, 1, 0 ]

Summary

Public Constructors
ColorMatrix()
Create a new colormatrix initialized to identity (as if reset() had been called).
ColorMatrix(float[] src)
Create a new colormatrix initialized with the specified array of values.
ColorMatrix(ColorMatrix src)
Create a new colormatrix initialized with the specified colormatrix.
Public Methods
final float[] getArray()
Return the array of floats representing this colormatrix.
void postConcat(ColorMatrix postmatrix)
Concat this colormatrix with the specified postmatrix.
void preConcat(ColorMatrix prematrix)
Concat this colormatrix with the specified prematrix.
void reset()
Set this colormatrix to identity:
 [ 1 0 0 0 0   - red vector
   0 1 0 0 0   - green vector
   0 0 1 0 0   - blue vector
   0 0 0 1 0 ] - alpha vector
 
void set(float[] src)
Assign the array of floats into this matrix, copying all of its values.
void set(ColorMatrix src)
Assign the src colormatrix into this matrix, copying all of its values.
void setConcat(ColorMatrix matA, ColorMatrix matB)
Set this colormatrix to the concatenation of the two specified colormatrices, such that the resulting colormatrix has the same effect as applying matB and then applying matA.
void setRGB2YUV()
Set the matrix to convert RGB to YUV
void setRotate(int axis, float degrees)
Set the rotation on a color axis by the specified values.
void setSaturation(float sat)
Set the matrix to affect the saturation of colors.
void setScale(float rScale, float gScale, float bScale, float aScale)
Set this colormatrix to scale by the specified values.
void setYUV2RGB()
Set the matrix to convert from YUV to RGB
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public ColorMatrix ()

Added in API level 1

Create a new colormatrix initialized to identity (as if reset() had been called).

public ColorMatrix (float[] src)

Added in API level 1

Create a new colormatrix initialized with the specified array of values.

Parameters
src

public ColorMatrix (ColorMatrix src)

Added in API level 1

Create a new colormatrix initialized with the specified colormatrix.

Parameters
src

Public Methods

public final float[] getArray ()

Added in API level 1

Return the array of floats representing this colormatrix.

Returns
float[]

public void postConcat (ColorMatrix postmatrix)

Added in API level 1

Concat this colormatrix with the specified postmatrix.

This is logically the same as calling setConcat(postmatrix, this);

Parameters
postmatrix

public void preConcat (ColorMatrix prematrix)

Added in API level 1

Concat this colormatrix with the specified prematrix.

This is logically the same as calling setConcat(this, prematrix);

Parameters
prematrix

public void reset ()

Added in API level 1

Set this colormatrix to identity:

 [ 1 0 0 0 0   - red vector
   0 1 0 0 0   - green vector
   0 0 1 0 0   - blue vector
   0 0 0 1 0 ] - alpha vector
 

public void set (float[] src)

Added in API level 1

Assign the array of floats into this matrix, copying all of its values.

Parameters
src

public void set (ColorMatrix src)

Added in API level 1

Assign the src colormatrix into this matrix, copying all of its values.

Parameters
src

public void setConcat (ColorMatrix matA, ColorMatrix matB)

Added in API level 1

Set this colormatrix to the concatenation of the two specified colormatrices, such that the resulting colormatrix has the same effect as applying matB and then applying matA.

It is legal for either matA or matB to be the same colormatrix as this.

Parameters
matA
matB

public void setRGB2YUV ()

Added in API level 1

Set the matrix to convert RGB to YUV

public void setRotate (int axis, float degrees)

Added in API level 1

Set the rotation on a color axis by the specified values.

axis=0 correspond to a rotation around the RED color axis=1 correspond to a rotation around the GREEN color axis=2 correspond to a rotation around the BLUE color

Parameters
axis
degrees

public void setSaturation (float sat)

Added in API level 1

Set the matrix to affect the saturation of colors.

Parameters
sat A value of 0 maps the color to gray-scale. 1 is identity.

public void setScale (float rScale, float gScale, float bScale, float aScale)

Added in API level 1

Set this colormatrix to scale by the specified values.

Parameters
rScale
gScale
bScale
aScale

public void setYUV2RGB ()

Added in API level 1

Set the matrix to convert from YUV to RGB