Изменение составляющих цвета
Чтобы изменить отдельные составляющие цвета, надо прежде всего посмотреть тип хранения элементов в Bufferedimage, по умолчанию это TYPE_INT_RGB. Здесь три составляющие – красная, зеленая и синяя. Каждая составляющая цвета занимает один байт, все они хранятся в одном числе типа int. Затем надо составить таблицу новых значений составляющих.
В листинге 15.7 это двумерный массив samples. Потом заполняем данный массив нужными значениями составляющих каждого цвета. В листинге 15.7 задается ярко-красный цвет рисования и белый цвет фона. По полученной таблице создаем экземпляр класса ByteLookupTable, который свяжет эту таблицу с буфером данных. Этот экземпляр используем для создания объекта класса LookupOp. Наконец, применяем метод filter () этого класса.
В листинге 15.7 приведен только фрагмент программы. Для получения полной программы его надо вставить в листинг 15.6 вместо выделенного в нем фрагмента. Логотип Java будет нарисован ярко-красным цветом.
Листинг 15.7. Изменение составляющих цвета.
//– Вставить в листинг 15.6 – byte samples[][] = new byte[3][256]; for (int j = 0; j < 255; j++){ samples[0][j] = (byte)(255); // Красная составляющая samples[1][j] = (byte)(0); // Зеленая составляющая samples[2][j] = (byte)(0); // Синяя составляющая } samples[0][255] = (byte) (255); // Цвет фона – белый samples[1][255] = (byte) (255); samples [2] [255] = (bybej (255); ByteLookupTabie blut=new ByteLookupTabie(0, samples); LookupOp lop = new LookupOp(blut, null); lop.filter(bi, bimg); //– Конец вставки – -