Графические интерфейсы пользователя Java. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Графические интерфейсы пользователя Java - Тимур Машнин страница 16

СКАЧАТЬ Java, являются прямая цветовая модель и модель индексированных цветов.

      Прямая цветовая модель работает со значениями пикселей, которые представляют цвет RGB и альфа-информацию отдельно, которые упакованы для каждого пикселя в одно значение.

      Модель индексированных цветов поддерживается 8-битными изображениями, содержащими не более 256 цветов.

      Эта модель работает с картой цветов изображения, в которой хранятся и индексируются цвета, используемые в изображении.

      Эта позволяет уменьшить размер файла изображения, при этом сохраняя качество изображения.

      Вернемся к нашему примеру.

      Помимо конструктора, класс ColorFilter реализует только один метод filterRGB, который является абстрактным методом, определенным в классе RGBImageFilter.

      Метод filterRGB принимает три параметра: положение x и y пикселя внутри изображения и 32-битное (целочисленное) значение цвета.

      Единственный параметр, которым вы занимаетесь, является значение цвета, rgb.

      Стандартная цветовая модель RGB помещает красные, зеленые и синие компоненты в нижние 24 бита 32-битного значения цвета.

      И каждый из них можно извлечь, сдвигая параметр rgb.

      Эти отдельные компоненты хранятся в локальных переменных r, g и b.

      Обратите внимание, что здесь каждый компонент цвета смещается только в том случае, если он не фильтруется.

      Для фильтрованных цветов, компонент цвета установлен в 0.

      Новые цветовые компоненты затем переносятся обратно в 32-битное значение цвета и возвращаются из метода filterRGB.

      Обратите внимание, что альфа-компонент значения цвета не изменяется.

      Для этого используется маска 0xff000000, потому что альфа-компонент находится в верхнем байте значения цвета.

      Помимо обработки изображений, с помощью вставки фильтров изображений между производителем изображения и потребителем изображения,

      Java поддерживает фильтрацию изображений с помощью интерфейса BufferedImageOp.

      Метод filter интерфейса BufferedImageOp принимает объект BufferedImage как вход (исходное изображение) и выполняет обработку данных изображения, создавая другой объект BufferedImage (конечное изображение).

      Напомним, что класс BufferedImage расширяет класс Image, обеспечивая доступ к буферу данных изображения.

      Java 2D API предоставляет набор реализаций интерфейса BufferedImageOp.

      AffineTransformOp – преобразует изображение геометрически.

      ColorConvertOp – выполняет по-пиксельное преобразование цвета в исходном изображении.

      ConvolveOp – выполняет свертку, математическую операцию, которая может использоваться для размытия, изменения резкости или другой обработки изображения.

      LookupOp – изменяет отдельные составляющие цвета.

      RescaleOp – изменяет интенсивность изображения.

      Здесь показан пример применения фильтра RescaleOp, изменяющего интенсивность цвета.

СКАЧАТЬ