Модель обработки прямым доступом
Чтобы отвлечься от способа хранения точек изображения, Raster может обращаться не к буферу DataBuffer, а к подклассам абстрактного класса SampieModei, рассматривающим не отдельные байты буфера, а составляющие (samples) цвета. В модели RGB – это красная, зеленая и синяя составляющие. В пакете java.awt.image есть пять подклассов класса SampleModei:
- componentsampleModel – каждая составляющая цвета хранится в отдельном элементе массива DataBuffer;
- BandedSampleModel – данные хранятся по составляющим, составляющие одного цвета хранятся обычно в одном массиве, a DataBuffer содержит двумерный массив: по массиву для каждой составляющей; данный класс расширяет класс ComponentsampieModel;
- PixelInterleavedSampieModel – все составляющие цвета одного пиксела хранятся в соседних элементах единственного массива DataBuffer; данный Класс расширяет класс ComponentsampieModel;
- MultiPixeiPackedSampieModel – цвет каждого пиксела содержит только одну составляющую, которая может быть упакована в один элемент массива DataBuffer;
- singiePixelPackedSampleModel – все составляющие цвета каждого пиксела хранятся в одном элементе массива DataBuffer.
На рис. 15.5 представлена иерархия классов Java 2D, реализующая модель прямого доступа.
Итак, Java 2D создает сложную и разветвленную трехслойную систему DataBuffer – SampleModel – Raster управления данными изображения Bufferedimage. Вы можете манипулировать точками изображения, используя их координаты в методах классов Raster или спуститься на уровень ниже и обращаться к составляющим цвета пиксела методами классов SampleModel. Если же вам надо работать с отдельными байтами, воспользуйтесь классами DataBuffer.
Рис. 15.5. Классы, реализующие модель прямого доступа
Применять эту систему приходится редко, только при создании своего способа преобразования изображения. Стандартные же преобразования выполняются очень просто.