Module java.desktop
Package java.awt.image

Class RGBImageFilter

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

public abstract class RGBImageFilter extends ImageFilter
该类提供了一种简单的方法来创建一个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 Details

  • Constructor Details

    • RGBImageFilter

      protected RGBImageFilter()
      子类调用的构造函数。
  • Method Details

    • setColorModel

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

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

      指定者:
      setColorModel 在接口 ImageConsumer
      覆盖:
      setColorModel 在类 ImageFilter
      参数:
      model - 指定的ColorModel
      参见:
    • 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函数来过滤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颜色模型中的过滤像素。
      参见: