java.lang.Object
java.awt.image.ImageFilter
java.awt.image.RGBImageFilter
- 所有已实现的接口:
-
ImageConsumer
,Cloneable
- 直接已知的子类:
-
GrayFilter
该类提供了一种简单的方法来创建一个ImageFilter,用于修改默认RGB ColorModel中图像的像素。它旨在与FilteredImageSource对象一起使用,以生成现有图像的经过滤的版本。这是一个抽象类,提供了通过单个方法传递所有像素数据所需的调用,该方法将像素一个接一个地转换为默认RGB ColorModel中的像素,而不管ImageProducer使用的ColorModel是什么。创建可用的图像过滤器所需定义的唯一方法是filterRGB方法。以下是一个定义交换图像红色和蓝色分量的过滤器的示例:
class RedBlueSwapFilter extends RGBImageFilter {
public RedBlueSwapFilter() {
// 该过滤器的操作不依赖于像素的位置,因此可以直接过滤IndexColorModels。
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb) {
return ((rgb & 0xff00ff00)
| ((rgb & 0xff0000) >> 16)
| ((rgb & 0xff) << 16));
}
}
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
此布尔值指示是否可以将filterRGB方法的颜色过滤应用于IndexColorModel对象的颜色表条目,而不是逐像素过滤。protected ColorModel
当用户调用substituteColorModel时,用于替换origmodel的ColorModel。protected ColorModel
当用户调用substituteColorModel
时,要替换的ColorModel为newmodel。Fields declared in class java.awt.image.ImageFilter
consumer
Fields declared in interface java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription通过运行IndexColorModel对象中的每个条目的颜色表,通过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) 通过将默认RGB ColorModel中的像素一个接一个地传递给filterRGB方法来过滤像素缓冲区。void
setColorModel
(ColorModel model) 如果ColorModel是IndexColorModel并且子类已将canFilterIndexColorModel标志设置为true,则我们在此处替换颜色模型的过滤版本,并在setPixels方法中出现原始ColorModel对象的任何位置处替换它。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 declared in class java.awt.image.ImageFilter
clone, getFilterInstance, imageComplete, resendTopDownLeftRight, setDimensions, setHints, setProperties
-
Field Details
-
origmodel
当用户调用substituteColorModel
时,要替换的ColorModel为newmodel。 -
newmodel
当用户调用substituteColorModel时,用于替换origmodel的ColorModel。 -
canFilterIndexColorModel
protected boolean canFilterIndexColorModel此布尔值指示是否可以将filterRGB方法的颜色过滤应用于IndexColorModel对象的颜色表条目,而不是逐像素过滤。如果子类的filterRGB方法不依赖于正在过滤的像素的坐标,则子类应在其构造函数中将此变量设置为true。- 参见:
-
-
Constructor Details
-
RGBImageFilter
protected RGBImageFilter()子类调用的构造函数。
-
-
Method Details
-
setColorModel
如果ColorModel是IndexColorModel并且子类已将canFilterIndexColorModel标志设置为true,则我们在此处替换颜色模型的过滤版本,并在setPixels方法中出现原始ColorModel对象的任何位置处替换它。如果ColorModel不是IndexColorModel或为null,则此方法将覆盖ImageProducer使用的默认ColorModel,并指定默认的RGB ColorModel。注意:此方法旨在由正在过滤像素的Image的ImageProducer调用。使用此类来过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。
- 指定者:
-
setColorModel
在接口ImageConsumer
- 覆盖:
-
setColorModel
在类ImageFilter
- 参数:
-
model
- 指定的ColorModel
- 参见:
-
substituteColorModel
注册两个ColorModel对象以进行替换。如果在任何setPixels方法中遇到oldcm,则替换newcm,并将像素通过但使用新的ColorModel对象传递。- 参数:
-
oldcm
- 要即时替换的ColorModel对象 -
newcm
- 要替换oldcm的ColorModel对象
-
filterIndexColorModel
通过运行IndexColorModel对象中的每个条目的颜色表,通过RGBImageFilter子类必须提供的filterRGB函数来过滤IndexColorModel对象。使用坐标-1表示正在过滤颜色表条目而不是实际像素值。- 参数:
-
icm
- 要过滤的IndexColorModel对象 - 返回:
- 表示经过滤颜色的新IndexColorModel
- 抛出:
-
NullPointerException
- 如果icm
为null
-
filterRGBPixels
public void filterRGBPixels(int x, int y, int w, int h, int[] pixels, int off, int scansize) 通过将默认RGB ColorModel中的像素一个接一个地传递给filterRGB方法来过滤像素缓冲区。- 参数:
-
x
- 像素区域左上角的X坐标 -
y
- 像素区域左上角的Y坐标 -
w
- 像素区域的宽度 -
h
- 像素区域的高度 -
pixels
- 像素数组 -
off
- 像素数组中的偏移量 -
scansize
- 像素数组中从一行像素到下一行的距离 - 参见:
-
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方法逐个转换。注意:此方法旨在由正在过滤像素的Image的ImageProducer调用。使用此类来过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。
- 指定者:
-
setPixels
在接口ImageConsumer
- 覆盖:
-
setPixels
在类ImageFilter
- 参数:
-
x
- 要设置像素区域左上角的X坐标 -
y
- 要设置像素区域左上角的Y坐标 -
w
- 像素区域的宽度 -
h
- 像素区域的高度 -
model
- 指定的ColorModel
-
pixels
- 像素数组 -
off
- 像素数组中的偏移量 -
scansize
- 像素数组中从一行像素到下一行的距离 - 参见:
-
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方法。注意:此方法旨在由正在过滤像素的Image的ImageProducer调用。使用此类来过滤图像像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。
- 指定者:
-
setPixels
在接口ImageConsumer
- 覆盖:
-
setPixels
在类ImageFilter
- 参数:
-
x
- 要设置像素区域左上角的X坐标 -
y
- 要设置像素区域左上角的Y坐标 -
w
- 像素区域的宽度 -
h
- 像素区域的高度 -
model
- 指定的ColorModel -
pixels
- 像素数组 -
off
- 像素数组中的偏移量 -
scansize
- 像素数组中从一行像素到下一行的距离 - 参见:
-
filterRGB
public abstract int filterRGB(int x, int y, int rgb) 子类必须指定一种方法,将默认的RGB ColorModel中的单个输入像素转换为单个输出像素。- 参数:
-
x
- 像素的X坐标 -
y
- 像素的Y坐标 -
rgb
- 默认RGB颜色模型中的整数像素表示 - 返回:
- 默认RGB颜色模型中的过滤像素。
- 参见:
-