На базе интерфейсов ImageProducer и ImageConsumer (и их конкретных классов MemoryImageSource И PixelGrabber), можно создать произвольный набор преобразующих фильтров, каждый из которых берет источник пикселов, модифицирует сгенерированные ими пикселы и передает произвольному потребителю. Этот механизм аналогичен способу, с помощью которого создаются конкретные абстрактные классы ввода/вывода InputStream, OutputStream, Reader и Writer. Такая поточная модель изображений завершается введением класса ImageFilter. Класс ImageFilter пакета java.awt.Image имеет несколько подклассов — AreaAveragingScaleFilter, CropImageFilter, ReplicateScaleFilter и RGBImageFilter. Кроме того, в пакете имеется специальная реализация интерфейса ImageProducer с именем FilteredImageSource. Объекты класса FilteredImageSource производят фильтрованные пикселы изображений, генерируемых объектами класса ImageProducer. Для фильтрации в них используются объекты одного из указанных выше подклассов ImageFilter. Экземпляр класса FilteredImageSource передается (в качестве аргумента) в вызов метода CreateImage(), который используется в качестве производителя фильтрованных (преобразованных) изображений. Мы рассмотрим два специальных фильтра: CropImageFilter и RGBImageFilter.