JavaTM 2 Platform
Standard Ed. 5.0

java.awt.image
类 RGBImageFilter

java.lang.Object
  继承者 java.awt.image.ImageFilter
      继承者 java.awt.image.RGBImageFilter
所有已实现的接口:
ImageConsumer, Cloneable

public abstract class RGBImageFilter
extends ImageFilter

此类提供一个创建 ImageFilter 的便捷方法,修改默认 RGB ColorModel 中的图像像素。这意味着要与 FilteredImageSource 对象结合使用来生成现有图像的过滤图像。该类是一个抽象类,它提供引导所有像素数据通过单独某个方法所需的调用,其中,无论 ImageProducer 正使用何种 ColorModel,该方法每次都会转换默认 RGB 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));
            }
        }

 

另请参见:
FilteredImageSource, ImageFilter, ColorModel.getRGBdefault()

字段摘要
protected  boolean canFilterIndexColorModel
          此布尔值指示是否可以接受用 filterRGB 方法的颜色过滤替代逐像素过滤,将它应用于 IndexColorModel 对象的颜色表项。
protected  ColorModel newmodel
          用户调用 substituteColorModel 时替换 origmodelColorModel
protected  ColorModel origmodel
          用户调用 substituteColorModel 时将由 newmodel 替换的 ColorModel
 
从类 java.awt.image.ImageFilter 继承的字段
consumer
 
从接口 java.awt.image.ImageConsumer 继承的字段
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
构造方法摘要
RGBImageFilter()
           
 
方法摘要
 IndexColorModel filterIndexColorModel(IndexColorModel icm)
          过滤 IndexColorModel 对象,实现方式是通过 RGBImageFilter 子类必须提供的 filterRGB 方法运行该对象颜色表中的每一个项。
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 对象。
 
从类 java.awt.image.ImageFilter 继承的方法
clone, getFilterInstance, imageComplete, resendTopDownLeftRight, setDimensions, setHints, setProperties
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

origmodel

protected ColorModel origmodel
用户调用 substituteColorModel 时将由 newmodel 替换的 ColorModel


newmodel

protected ColorModel newmodel
用户调用 substituteColorModel 时替换 origmodelColorModel


canFilterIndexColorModel

protected boolean canFilterIndexColorModel
此布尔值指示是否可以接受用 filterRGB 方法的颜色过滤替代逐像素过滤,将它应用于 IndexColorModel 对象的颜色表项。如果子类的 filterRGB 并不取决于过滤像素的坐标,则子类应在其构造方法中将此变量设置为 true。

另请参见:
substituteColorModel(java.awt.image.ColorModel, java.awt.image.ColorModel), filterRGB(int, int, int), IndexColorModel
构造方法详细信息

RGBImageFilter

public RGBImageFilter()
方法详细信息

setColorModel

public void setColorModel(ColorModel model)
如果 ColorModel 是 IndexColorModel 且子类将 canFilterIndexColorModel 标志设置为 true,则将这里和 setPixels 方法中任何出现原始 ColorModel 对象的地方替换为过滤后的颜色模型。如果 ColorModel 不是 IndexColorModel 或者为 null,则此方法重写由 ImageProducer 使用的默认 ColorModel,并指定默认 RGB ColorModel 替代它。

注:此方法应由其像素正被过滤的 ImageImageProducer 调用。使用此类过滤图像像素的开发人员应该避免直接调用此方法,因为该操作可能干扰过滤操作。

指定者:
接口 ImageConsumer 中的 setColorModel
覆盖:
ImageFilter 中的 setColorModel
参数:
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)
过滤 IndexColorModel 对象,实现方式是通过 RGBImageFilter 子类必须提供的 filterRGB 方法运行该对象颜色表中的每一个项。使用坐标 -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, 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 方法进行逐一转换。

注:此方法应由其像素正被过滤的 ImageImageProducer 调用。使用此类过滤图像像素的开发人员应该避免直接调用此方法,因为该操作可能干扰过滤操作。

指定者:
接口 ImageConsumer 中的 setPixels
覆盖:
ImageFilter 中的 setPixels
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 方法。

注:此方法应由其像素正被过滤的 ImageImageProducer 调用。使用此类过滤图像像素的开发人员应该避免直接调用此方法,因为该操作可能干扰过滤操作。

指定者:
接口 ImageConsumer 中的 setPixels
覆盖:
ImageFilter 中的 setPixels
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, y - 像素的坐标
rgb - 默认 RGB 颜色模型的整数像素表示
返回:
默认 RGB 颜色模型中过滤后的像素。
另请参见:
ColorModel.getRGBdefault(), filterRGBPixels(int, int, int, int, int[], int, int)

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策