Каталог сайтов + Иллюстрированный самоучитель по Java

:: Меню ::

Главная

Каталог сайтов
Веб-дизайн
Навигация
Доски объявлений
Общение
Каталоги
Скрипты
Знакомства
Другое
Иллюстрированный самоучитель по Java
Изображения и звук
  • Модель обработки "поставщик-потребитель"
    Классы-фильтры
    Как выделить фрагмент изображения
    Как изменить цвет изображения
    Как переставить пикселы изображения
  • Модель обработки прямым доступом
    Преобразование изображения в Java 2D
    Аффинное преобразование изображения
    Изменение интенсивности изображения
    Изменение составляющих цвета
    Создание различных эффектов
    Анимация
    Улучшение изображения двойной буферизацией
    Звук
    Проигрывание звука в Java 2
    Синтез и запись звука в Java 2
  • :::::::::::::::::::::::::::::::::::::::::::::

    Гостевая книга
    Контакты
    Добавить в избраное

    :: Друзья ::

    Informatuka.info - Курс лекцій з Інформатики
     

    :: Статистика ::

    Яндекс цитирования сайта Inet Neskli Com
    - -
     

     

     

     

     

     

     

    Модель обработки прямым доступом

    Подобно тому, как вместо класса Graphics система Java 2D использует его расширение Graphics2D, описанное в главе 9, вместо класса image в Java 2D употребляется его расширение — класс Bufferedimage. В конструкторе этого класса

    Bufferedlmage(int width, int height, int imageType)

    задаются размеры изображения и способ хранения точек — одна из констант:

    TYPE_INT_RGB       TYPE_4BYTE_ABRG        TYPE_USHORT_565_RGB

    TYPE_INT_ARGB      TYPE_4BYTE_ABRG_PRE    TYPE_USHORT_555_RGB

    TYPE_INT_ARGB_PRE  TYPE_BYTE_GRAY         TYPE_USHORT_GRAY

    TYPE_INT_BRG       TYPE_BYTE_BINARY

    TYPE_3BYTE_BRG     TYPE_BYTE_INDEXED

    Как видите, каждый пиксел может занимать 4 байта — INT, 4BYTE, или 2 байта — USHORT, или 1 байт — BYTE. Может использоваться цветовая модель RGB, или добавлена альфа-составляющая — ARGB, или задан другой порядок расположения цветовых составляющих — BRG, или заданы градации серого цвета — GRAY. Каждая составляющая цвета может занимать один байт, 5 битов или 6 битов.

    Экземпляры класса Bufferedimage редко создаются конструкторами. Для их создания чаще обращаются к методам createimage () класса component с простым приведением типа:

    Bufferedimage bi = (Bufferedlmage)createimage(width, height)

    При этом экземпляр bi получает характеристики компонента: цвет фона и цвет рисования, способ хранения точек.

    Расположение точек в изображении регулируется классом Raster или его подклассом WritabieRaster. Эти классы задают систему координат изображения, предоставляют доступ к отдельным пикселам методами getPixeio, позволяют выделять фрагменты изображения методами getPixeiso. Класс WritabieRaster дополнительно разрешает изменять отдельные пикселы методами setPixei () или целые фрагменты изображения методами setPixels () и setRect().

    Начало системы координат изображения — левый верхний угол — имеет координаты (minx, minY), не обязательно равные нулю.

    При создании экземпляра класса Bufferedimage автоматически формируется связанный с ним экземпляр класса WritabieRaster.

    Точки изображения хранятся в скрытом буффе, содержащем одномерный или двумерный массив точек. Вся работа с буфером осуществляется методами одного из классов DataBufferByte, DataBufferlnt, DataBufferShort, DataBufferushort в зависимости от длины данных. Общие свойства этих классов собраны в их абстрактном суперклассе DataBuffer. В нем определены типы данных, хранящихся в буфере: TYPE_BYTE, TYPEJJSHORT, TYPE_INT, TYPEJJNDEFINED.

    Методы класса DataBuffer предоставляют прямой доступ к данным буфера, но удобнее и безопаснее обращаться к ним методами классов Raster и WritableRaster.

    При создании экземпляра класса Raster или класса WritableRaster создается экземпляр соответствующего подкласса класса DataBuffer.

    Чтобы отвлечься от способа хранения точек изображения, Raster может обращаться не к буферу DataBuffer, а к подклассам абстрактного класса SampieModei, рассматривающим не отдельные байты буфера, а составляющие (samples) цвета. В модели RGB — это красная, зеленая и синяя составляющие. В пакете java.awt. image есть пять подклассов класса SampieModei:

    • componentsampieModel — каждая составляющая цвета хранится в отдельном элементе массива DataBuffer;
    • BandedSampleModel — данные хранятся по составляющим, составляющие одного цвета хранятся обычно в одном массиве, a DataBuffer содержит двумерный массив: по массиву для каждой составляющей; данный класс расширяет класс ComponentsampieModel ;
    • PixelInterleavedSampieModel — все составляющие цвета одного пиксела хранятся в соседних элементах единственного массива DataBuffer ; данный Класс расширяет класс ComponentsampieModel ;
    • MultiPixeiPackedSampieModel — цвет каждого пиксела содержит только одну составляющую, которая может быть упакована в один элемент массива DataBuffer ;
    • singiePixelPackedSampleModel — все составляющие цвета каждого пиксела хранятся в одном элементе массива DataBuffer .

    На рис. 15.5 представлена иерархия классов Java 2D, реализующая модель прямого доступа.

    Итак, Java 2D создает сложную и разветвленную трехслойную систему DataBuffer SampieModei Raster управления данными изображения Bufferedimage . Вы можете манипулировать точками изображения, используя их координаты в методах классов Raster или спуститься на уровень ниже и обращаться к составляющим цвета пиксела методами классов SampieModei . Если же вам надо работать с отдельными байтами, воспользуйтесь классами DataBuffer .

    Рис. 15.5. Классы, реализующие модель прямого доступа

    Применять эту систему приходится редко, только при создании своего способа преобразования изображения. Стандартные же преобразования выполняются очень просто.

     


    :: Наша кнопка ::

    Получить код:

    Поддержите наш ресурс - разместите нашу кнопку на своем сайте


    :: Реклама ::

    > <+
    <


    :: Ссылки ::

    -


    ::Баннеры ::

     -
    -
     

     

     

     


    Copyright © Нескли.ком, 2008