- java.lang.Object
-
- java.awt.image.ImageFilter
-
- java.awt.image.RGBImageFilter
-
- 实现的所有接口
-
ImageConsumer
,Cloneable
- 已知直接子类:
-
GrayFilter
public abstract class RGBImageFilterextends 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)); } }
-
-
字段汇总
字段 变量和类型 字段 描述 protected boolean
canFilterIndexColorModel
此布尔值表示是否可以将filterRGB方法的颜色过滤应用于IndexColorModel对象的颜色表条目,而不是逐像素过滤。protected ColorModel
newmodel
该ColorModel
用来替换origmodel
当用户调用substituteColorModel
。protected ColorModel
origmodel
-
声明的属性在类 java.awt.image.ImageFilter
consumer
-
Fields declared in interface java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
-
-
构造方法摘要
构造方法 构造器 描述 RGBImageFilter()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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对象以进行替换。-
声明方法的类 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对象的颜色表条目,而不是逐像素过滤。 如果子类的filterRGB方法不依赖于被过滤像素的坐标,则子类应在其构造函数中将此变量设置为true。
-
-
方法详细信息
-
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
- 用于替换oldcm的ColorModel对象
-
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)
-
-