Module  java.desktop
软件包  java.awt.image

Class RGBImageFilter

  • All Implemented Interfaces:
    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。

        注意:此方法的目的是通过被称为ImageProducer所述的Image其像素正被过滤。 使用此类过滤图像中的像素的开发人员应避免直接调用此方法,因为该操作可能会干扰过滤操作。

        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 - ColorModel对象即时替换oldcm
      • 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)