模块  java.desktop
软件包  java.awt.image

Class RGBImageFilter

  • 实现的所有接口
    ImageConsumerCloneable
    已知直接子类:
    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)); } }  
    另请参见:
    FilteredImageSourceImageFilterColorModel.getRGBdefault()
    • 构造方法详细信息

      • RGBImageFilter

        public RGBImageFilter()
    • 方法详细信息

      • setColorModel

        public void setColorModel​(ColorModel model)
        如果ColorModel是IndexColorModel并且子类已将canFilterIndexColorModel标志设置为true,则我们在此处以及原始ColorModel对象在setPixels方法中出现的任何位置替换颜色模型的过滤版本。 如果ColorModel不是IndexColorModel或为null,则此方法将覆盖ImageProducer使用的默认ColorModel,并指定默认的RGB ColorModel。

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

        Specified by:
        setColorModel在界面 ImageConsumer
        重写:
        setColorModelImageFilter
        参数
        model - 指定的 ColorModel
        另请参见:
        ImageConsumerColorModel.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方法,逐个转换。

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

        Specified by:
        setPixels在接口 ImageConsumer
        重写:
        setPixelsImageFilter
        参数
        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方法。

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

        Specified by:
        setPixels在界面 ImageConsumer
        重写:
        setPixelsImageFilter
        参数
        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)