- java.lang.Object
-
- java.awt.image.ImageFilter
-
- java.awt.image.RGBImageFilter
-
- All Implemented Interfaces:
-
ImageConsumer
,Cloneable
- 已知直接子类:
-
GrayFilter
public abstract class RGBImageFilter extends ImageFilter
该类提供了一种简单的方法来创建一个ImageFilter,它可以修改默认RGB ColorModel中图像的像素。 这意味着与FilteredImageSource对象结合使用以产生现有图像的过滤版本。 它是一个抽象类,它提供通过单个方法来传送所有像素数据所需的调用,该方法可以在默认的RGB ColorModel中一次一个地转换像素,而不管ImageProducer使用的ColorModel如何。 需要定义创建可用图像过滤器的唯一方法是filterRGB方法。 以下是将图像的红色和蓝色分量交换的过滤器定义的示例:class RedBlueSwapFilter extends RGBImageFilter { public RedBlueSwapFilter() { // The filter's operation does not depend on the // pixel's location, so IndexColorModels can be // filtered directly. canFilterIndexColorModel = true; } public int filterRGB(int x, int y, int rgb) { return ((rgb & 0xff00ff00) | ((rgb & 0xff0000) >> 16) | ((rgb & 0xff) << 16)); } }
-
-
Field Summary
Fields Modifier and Type Field 描述 protected boolean
canFilterIndexColorModel
该布尔值指示是否可以将filterRGB方法的颜色过滤应用于IndexColorModel对象的颜色表条目,以代替逐像素过滤。protected ColorModel
newmodel
ColorModel
用来取代origmodel
当用户拨打substituteColorModel
。protected ColorModel
origmodel
-
Fields inherited from interface java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
-
Fields inherited from class java.awt.image.ImageFilter
consumer
-
-
构造方法摘要
构造方法 Constructor 描述 RGBImageFilter()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 IndexColorModel
filterIndexColorModel(IndexColorModel icm)
通过RGBImageFilter子类必须提供的filterRGB函数运行其颜色表中的每个条目来过滤IndexColorModel对象。abstract int
filterRGB(int x, int y, int rgb)
子类必须指定一种将默认RGB ColorModel中的单个输入像素转换为单个输出像素的方法。void
filterRGBPixels(int x, int y, int w, int h, int[] pixels, int off, int scansize)
通过filterRGB方法逐个传递默认RGB ColorModel中的像素缓冲区。void
setColorModel(ColorModel model)
如果ColorModel是IndexColorModel,并且子类将canFilterIndexColorModel标志设置为true,则在此处替换颜色模型的过滤版本,并将原始ColorModel对象出现在setPixels方法中。void
setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)
如果ColorModel对象与已经被转换的对象相同,那么只需将像素通过转换的ColorModel传递。void
setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)
如果ColorModel对象与已经被转换的对象相同,那么只需将像素通过转换的ColorModel传递,否则将整数像素的缓冲区转换为默认的RGB ColorModel,并将转换后的缓冲区传递给filterRGBPixels方法进行转换一个void
substituteColorModel(ColorModel oldcm, ColorModel newcm)
注册两个ColorModel对象进行替换。-
Methods inherited from class java.awt.image.ImageFilter
clone, getFilterInstance, imageComplete, resendTopDownLeftRight, setDimensions, setHints, setProperties
-
-
-
-
字段详细信息
-
origmodel
protected ColorModel origmodel
-
newmodel
protected ColorModel newmodel
ColorModel
用来取代origmodel
当用户拨打substituteColorModel
。
-
canFilterIndexColorModel
protected boolean canFilterIndexColorModel
该布尔值指示是否可以将filterRGB方法的颜色过滤应用于IndexColorModel对象的颜色表条目,以代替逐像素过滤。 子类应在其构造函数中将此变量设置为true,如果其filterRGB方法不依赖于被过滤的像素的坐标。
-
-
方法详细信息
-
setColorModel
public void setColorModel(ColorModel model)
如果ColorModel是IndexColorModel,并且子类将canFilterIndexColorModel标志设置为true,则在此处替换颜色模型的过滤版本,并将原始ColorModel对象出现在setPixels方法中。 如果ColorModel不是IndexColorModel或null,则此方法将覆盖ImageProducer使用的默认ColorModel,并指定默认的RGB ColorModel。注意:此方法的目的是通过被称为
ImageProducer
所述的Image
其像素正被过滤。 使用此类过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。- Specified by:
-
setColorModel
在接口ImageConsumer
- 重写:
-
setColorModel
在ImageFilter
- 参数
-
model
- 指定的ColorModel
- 另请参见:
-
ImageConsumer
,ColorModel.getRGBdefault()
-
substituteColorModel
public void substituteColorModel(ColorModel oldcm, ColorModel newcm)
注册两个ColorModel对象进行替换。 如果在任何setPixels方法中遇到oldcm,newcm将被替换,并且像素通过不变的(但是使用新的ColorModel对象)。- 参数
-
oldcm
- 要快速替换的ColorModel对象 -
newcm
- ColorModel对象即时替换oldcm
-
filterIndexColorModel
public IndexColorModel filterIndexColorModel(IndexColorModel icm)
通过RGBImageFilter子类必须提供的filterRGB函数运行其颜色表中的每个条目来过滤IndexColorModel对象。 使用-1的坐标表示正在过滤颜色表条目,而不是实际的像素值。- 参数
-
icm
- 要过滤的IndexColorModel对象 - 结果
- 一个新的IndexColorModel表示过滤的颜色
- 异常
-
NullPointerException
- 如果icm
为空
-
filterRGBPixels
public void filterRGBPixels(int x, int y, int w, int h, int[] pixels, int off, int scansize)
通过filterRGB方法逐个传递默认RGB ColorModel中的像素缓冲区。- 参数
-
x
- 像素区域左上角的X坐标 -
y
- 像素区域左上角的Y坐标 -
w
- 像素区域的宽度 -
h
- 像素区域的高度 -
pixels
- 像素数组 -
off
- 偏移到pixels
数组 -
scansize
- 阵列中一行像素到下一行的距离 - 另请参见:
-
ColorModel.getRGBdefault()
,filterRGB(int, int, int)
-
setPixels
public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)
如果ColorModel对象与已经被转换的对象相同,那么只需将像素通过转换的ColorModel传递。 否则将字节像素的缓冲区转换为默认的RGB ColorModel,并将转换的缓冲区传递给filterRGBPixels方法以逐个转换。注意:此方法的目的是通过
ImageProducer
的Image
其像素进行过滤。 使用此类过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。- Specified by:
-
setPixels
在接口ImageConsumer
- 重写:
-
setPixels
在ImageFilter
- 参数
-
x
- 要设置的像素区域的左上角的X坐标 -
y
- 要设置的像素区域的左上角的Y坐标 -
w
- 像素面积的宽度 -
h
- 像素面积的高度 -
model
- 指定的ColorModel
-
pixels
- 像素数组 -
off
- 偏移到pixels
数组 -
scansize
-pixels
数组中的一行像素到下一行的距离 - 另请参见:
-
ColorModel.getRGBdefault()
,filterRGBPixels(int, int, int, int, int[], int, int)
-
setPixels
public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)
如果ColorModel对象与已经被转换的对象相同,那么只需将像素通过转换的ColorModel传递,否则将整数像素的缓冲区转换为默认的RGB ColorModel,并将转换后的缓冲区传递给filterRGBPixels方法进行转换一个 将整数像素的缓冲区转换为默认的RGB ColorModel,并将转换的缓冲区传递给filterRGBPixels方法。注意:此方法的目的是通过
ImageProducer
的Image
其像素进行过滤。 使用此类过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。- Specified by:
-
setPixels
在接口ImageConsumer
- 重写:
-
setPixels
在ImageFilter
- 参数
-
x
- 要设置的像素区域的左上角的X坐标 -
y
- 要设置的像素区域的左上角的Y坐标 -
w
- 像素面积的宽度 -
h
- 像素面积的高度 -
model
- 指定的ColorModel
-
pixels
- 像素数组 -
off
- 偏移到pixels
数组 -
scansize
-pixels
数组中从一行像素到下一行的距离 - 另请参见:
-
ColorModel.getRGBdefault()
,filterRGBPixels(int, int, int, int, int[], int, int)
-
filterRGB
public abstract int filterRGB(int x, int y, int rgb)
子类必须指定一种将默认RGB ColorModel中的单个输入像素转换为单个输出像素的方法。- 参数
-
x
- 像素的X坐标 -
y
- 像素的Y坐标 -
rgb
- 默认RGB颜色模型中的整数像素表示 - 结果
- 默认RGB颜色模型中的滤镜像素。
- 另请参见:
-
ColorModel.getRGBdefault()
,filterRGBPixels(int, int, int, int, int[], int, int)
-
-