BufferedImage描述一个带有颜色像素数据缓冲区的Image,它由ColorModel和Raster组成。Raster由DataBuffer和SampleModel组成,负责组织和存储决定象素颜色的数据,每个象素由采样值构成。DataBuffer存储图像的原始采样数据,SampleModel访问DataBuffer中任意给定象素的采样值。ColorModel是Raster的解释器,它将Raster中每个象素的采样值取出,并转换为正确的颜色。利用矩阵变换就可以改变象素值。给你个翻转颜色的例子。
// Java core packages
import java.awt.image.*;public class InvertFilter implements Java2DImageFilter {
// apply color inversion filter to BufferedImage
public BufferedImage processImage( BufferedImage image )
{
// create 256 color array and invert colors
byte[] invertArray = new byte[ 256 ];
for ( int counter = 0; counter < 256; counter++ )
invertArray[ counter ] = ( byte )( 255 - counter );
// create filter to invert colors
BufferedImageOp invertFilter = new LookupOp(
new ByteLookupTable( 0, invertArray ), null );
// apply filter to displayImage
return invertFilter.filter( image, null );
} // end method processImage
}
// Java core packages
import java.awt.image.*;public class InvertFilter implements Java2DImageFilter {
// apply color inversion filter to BufferedImage
public BufferedImage processImage( BufferedImage image )
{
// create 256 color array and invert colors
byte[] invertArray = new byte[ 256 ];
for ( int counter = 0; counter < 256; counter++ )
invertArray[ counter ] = ( byte )( 255 - counter );
// create filter to invert colors
BufferedImageOp invertFilter = new LookupOp(
new ByteLookupTable( 0, invertArray ), null );
// apply filter to displayImage
return invertFilter.filter( image, null );
} // end method processImage
}
import java.awt.image.*;public interface Java2DImageFilter {
// apply filter to Image
public abstract BufferedImage processImage(
BufferedImage image );
}
import java.awt.image.*;public class SharpenFilter implements Java2DImageFilter {
// apply edge-sharpening filter to BufferedImage
public BufferedImage processImage( BufferedImage image )
{
// array used to detect edges in image
float[] sharpenMatrix = {
0.0f, -1.0f, 0.0f,
-1.0f, 5.0f, -1.0f,
0.0f, -1.0f, 0.0f };
// create filter to sharpen edges
BufferedImageOp sharpenFilter =
new ConvolveOp( new Kernel( 3, 3, sharpenMatrix ),
ConvolveOp.EDGE_NO_OP, null );
// apply sharpenFilter to displayImage
return sharpenFilter.filter( image, null );
} // end method processImage
}
希望对你有所帮助。