Given the ImagcProduccr and Imageconsumer interface pair-and their concrete classes McmorylmageSourcc and PixelGrabber-you can create an ‘arbitrary set of translation filters that takes a source of pixels, modifies them, ami passes them on to an arbitrary consumer. This mechanism is analogous to the way concrete classes arc created from the abstract l~$.classes InputStream, OutputStream, Reader, and Writer is stream model for images is completed by the introduction of the Image filter class. Some subclasses of ImageFilter in the java.awt.image package arc Aren.Averaging Scale Flter, CroplmageFilter, ReplicateScalef’Hter, and RGBlmagcFiltcr. There is also an implementation of ImageProducer called Filtered image Source, which takes an arbitrary ImageFilter and wraps it around an Imageproducer to hlthcr the pixels it produces. An instance of Filtered make Force can b used as In ImagcProduccr in calls to create image, in much the same way that Buffcredlnputbtreams can be passed off as Input Streams L this chapter.we examine two filters: Croplmagel’ilter and RGBImage Filter.