JavaTM Platform
Standard Ed. 6

java.awt.image
类 RGBImageFilter

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

public abstract class RGBImageFilter
     
extends ImageFilter

此类提供一种便捷方式创建 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 对象:通过 filterRGB 函数(RGBImageFilter 子类必须提供该函数)运行该对象颜色表中的每一项。
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 对象:通过 filterRGB 函数(RGBImageFilter 子类必须提供该函数)运行该对象颜色表中的每一项。使用坐标 -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 - 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
参数:
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 方法。

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

指定者:
接口 ImageConsumer 中的 setPixels
覆盖:
ImageFilter 中的 setPixels
参数:
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)

JavaTM Platform
Standard Ed. 6

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

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