MemorylmageSource — это класс, который создает новый Image-объект ИЗ массива данных. Он определяет несколько конструкторов. Тот, который мы будем использовать, имеет следующую сигнатуру:
MemorylmageSource (int width, int height, int pixel [ ], int offset, int scanLineWidth) ,
Объект MemoryImageSource создается из массива целых чисел (в формате умалчиваемой цветовой модели RGB), указанного в параметре pixel (он-то и содержит данные для воспроизведения Image-объекта). В умалчиваемой цветовой модели пиксел — это целое число формата OxAARRGGBB, где А - Alpha, R - Red, G — Green, и В - Blue.
Значение Alpha представляет степень прозрачности пиксела (0 — полностью прозрачный, 255 — полностью непрозрачный). Ширина и высота результирующего изображения передается в параметрах width и height. Исходную точку для начала чтения данных в массиве пикселов задает параметр offset. Ширина строки сканирования (которая часто совпадает с шириной изображения) задает параметр scanLinewidth.
Следующий короткий пример генерирует MemoryImageSource-объект, используя разновидность простого алгоритма (поразрядное исключающее ИЛИ (х, у)-координат каждого пиксела).
Программа 136. Преобразование целого массива в изображение
Данные для нового MemoryImageSource создаются в методе init(). Массив целых предназначен для хранения пикселных значений; данные генерируются во вложенных for-циклах, где значения r, g и b организуют сдвиги в пикселах массива pixels. Наконец, вызывается метод createImage() с новым экземпляром MemoryImageSource, созданным из необработанных пикселных данных, в качестве последнего аргумента. Рис. 5 показывает изображение после выполнения апплета.