Программирование на языке Java


Работа с изображениями - часть 5


* <applet code="MemoryImager" width=256 height=256>

* </applet>

*/

import java.applet.*;

import java.awt.*;

import java.awt.image.*;

public class MemoryImager extends Applet {

Image art;

Dimension d;

public void init() {

generateImage();

}

public void generateImage() {

int pixels[] = new int[d.width * d.height];

int i = 0;

int r, g, b;

for(int y=0; y<h; y++) {

for(int x=0; x<h; x++) {

r = (x^y)&0xff; // red is x XOR у

g = (x*2^y*2)&0xff; //green is 2x XOR 2y

b = (x*4^y*4)&0xff; // blue is 4x XOR 4y

pixels[i++] = (255 << 24) | (r << 16) | (g << 8) | b;

} }

art = createImage(new MemoryImageSource(d.width, d.height, pixels, 0, d.width));

}

public void paint(Graphics g) {

g.drawlmage(art, 0, 0, this);

} }

Посмотрите как это интересное изображение выглядит на экране – MemoryImager.html.

ImageFilter и ImageFilterSource

Подклассы классов ImageFilter и ImageFilterSource используются совместно для создания новых изображений фильтрованием уже существующих. С двумя такими подклассами из пакета java.awt.image вы сейчас познакомитесь.

CropImageFilter

CropImageFilter создает новое изображение из фрагмента существующего. Использование этого фильтра полезно тогда, когда вы хотите использовать несколько маленьких изображений в одном апплете. Загрузка по сети двадцати изображений по 2 Кбайта происходит намного медленнее, чем загрузка одного файла размером 40 Кбайт. Если ваши изображения — одинакового размера, вы можете собрать их в единый блок и использовать CropImageFilter для разделения блока на отдельные изображения в Java-клиенте.

RGBImageFilter

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

Мультимедиа-горизонты

Существующая система обработки изображений в Java пока не полностью поддерживает потребительские стандарты из-за ограниченной переносимости в сегодняшнем многообразии компьютерных платформ. Но в Java нет никаких “врожденных” ограничений на разработку мультимедийных приложений. Я уверен, что мы станем свидетелями больших успехов в развитии и совершенствовании этой технологии в течении ближайших лет.




- Начало -  - Назад -  - Вперед -