Класс MemoryImageSource

Все реализованные интерфейсы:
ImageProducer
public class MemoryImageSource
extends Object
implements ImageProducer

Этот класс является реализацией интерфейса ImageProducer, который использует массив для создания значений пикселей для изображения. Вот пример, который рассчитывает изображение 100x100, представляющее плавный переход от черного к синему по оси X и от черного к красному по оси Y:

int w = 100;
      int h = 100;
      int pix[] = new int[w * h];
      int index = 0;
      for (int y = 0; y < h; y++) {
          int red = (y * 255) / (h - 1);
          for (int x = 0; x < w; x++) {
              int blue = (x * 255) / (w - 1);
              pix[index++] = (255 << 24) | (red << 16) | blue;
          }
      }
      Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
MemoryImageSource также способен управлять изображением в памяти, которое изменяется со временем, что позволяет анимировать или настраивать рендеринг. Вот пример того, как настроить источник анимации и сигнализировать о изменениях в данных (адаптировано из MemoryAnimationSourceDemo Гарта Дики):
int pixels[];
      MemoryImageSource source;

      public void init() {
          int width = 50;
          int height = 50;
          int size = width * height;
          pixels = new int[size];

          int value = getBackground().getRGB();
          for (int i = 0; i < size; i++) {
              pixels[i] = value;
          }

          source = new MemoryImageSource(width, height, pixels, 0, width);
          source.setAnimated(true);
          image = createImage(source);
      }

      public void run() {
          Thread me = Thread.currentThread( );
          me.setPriority(Thread.MIN_PRIORITY);

          while (true) {
              try {
                  Thread.sleep(10);
              } catch( InterruptedException e ) {
                  return;
              }

              // Modify the values in the pixels array at (x, y, w, h)

              // Send the new data to the interested ImageConsumers
              source.newPixels(x, y, w, h);
          }
      }

См. также:
ImageProducer

Краткое описание конструкторов

Конструктор Описание
MemoryImageSource​(int w, int h, int[] pix, int off, int scan)

Создаёт объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image.

MemoryImageSource​(int w, int h, int[] pix, int off, int scan, Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image.

MemoryImageSource​(int w, int h, ColorModel cm, byte[] pix, int off, int scan)

Создаёт объект ImageProducer, который использует массив байтов для создания данных для объекта Image.

MemoryImageSource​(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив байтов для создания данных для объекта Image.

MemoryImageSource​(int w, int h, ColorModel cm, int[] pix, int off, int scan)

Создаёт объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image.

MemoryImageSource​(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image.

Краткое описание методов

Модификатор и тип Метод Описание
void addConsumer​(ImageConsumer ic)

Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения.

boolean isConsumer​(ImageConsumer ic)

Определяет, присутствует ли ImageConsumer в списке потребителей, которые в данный момент заинтересованы в данных для этого изображения.

void newPixels()

Отправляет новый буфер пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения, и уведомляет их о завершении кадра анимации.

void newPixels​(byte[] newpix, ColorModel newmodel, int offset, int scansize)

Изменяет массив байтов, хранящий пиксели для этого изображения.

void newPixels​(int[] newpix, ColorModel newmodel, int offset, int scansize)

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

void newPixels​(int x, int y, int w, int h)

Отправляет прямоугольный фрагмент буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения, и уведомляет их о завершении кадра анимации.

void newPixels​(int x, int y, int w, int h, boolean framenotify)

Отправляет прямоугольный фрагмент буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения.

void removeConsumer​(ImageConsumer ic)

Удаляет ImageConsumer из списка потребителей, заинтересованных в данных для этого изображения.

void requestTopDownLeftRightResend​(ImageConsumer ic)

Запрашивает, чтобы у данного ImageConsumer данные изображения были доставлены ещё раз в порядке сверху вниз, слева направо.

void setAnimated​(boolean animated)

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

void setFullBufferUpdates​(boolean fullbuffers)

Устанавливает, должен ли этот анимированный фрагмент изображения всегда обновляться путём отправки всего буфера пикселей при каждом изменении.

void startProduction​(ImageConsumer ic)

Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения, и немедленно начинает доставку данных изображения через интерфейс ImageConsumer.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         byte[] pix,
                         int off,
                         int scan)

Создаёт объект ImageProducer, который использует массив байтов для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
cm - указанная ColorModel
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
См. также:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         byte[] pix,
                         int off,
                         int scan,
                         Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив байтов для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
cm - указанная ColorModel
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
props - список свойств, которые ImageProducer использует для обработки изображения
См. также:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         int[] pix,
                         int off,
                         int scan)

Создаёт объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
cm - указанная ColorModel
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
См. также:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         int[] pix,
                         int off,
                         int scan,
                         Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
cm - указанная ColorModel
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
props - список свойств, которые ImageProducer использует для обработки изображения
См. также:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         int[] pix,
                         int off,
                         int scan)

Создаёт объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
См. также:
Component.createImage(java.awt.image.ImageProducer), ColorModel.getRGBdefault()

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         int[] pix,
                         int off,
                         int scan,
                         Hashtable<?,​?> props)

Создаёт объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image.

Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
props - список свойств, которые ImageProducer использует для обработки изображения
См. также:
Component.createImage(java.awt.image.ImageProducer), ColorModel.getRGBdefault()

Методы

addConsumer

public void addConsumer(ImageConsumer ic)

Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения.

Указано в:
addConsumer в интерфейсе ImageProducer
Параметры:
ic - указанный ImageConsumer
Исключение:
NullPointerException - если указанный ImageConsumer равен null
См. также:
ImageConsumer

isConsumer

public boolean isConsumer(ImageConsumer ic)

Определяет, находится ли ImageConsumer в списке потребителей, которые в настоящее время заинтересованы в данных для этого изображения.

Указано в:
isConsumer в интерфейсе ImageProducer
Параметры:
ic - указанный ImageConsumer
Возвращает:
true если ImageConsumer находится в списке; false в противном случае.
См. также:
ImageConsumer

removeConsumer

public void removeConsumer(ImageConsumer ic)

Удаляет ImageConsumer из списка потребителей, заинтересованных в данных для этого изображения.

Указано в:
removeConsumer в интерфейсе ImageProducer
Параметры:
ic - указанный ImageConsumer
См. также:
ImageConsumer

startProduction

public void startProduction(ImageConsumer ic)

Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения, и немедленно начинает передачу данных изображения через интерфейс ImageConsumer.

Указано в:
startProduction в интерфейсе ImageProducer
Параметры:
ic - указанный ImageConsumer данные изображения через интерфейс ImageConsumer.
См. также:
ImageConsumer

requestTopDownLeftRightResend

public void requestTopDownLeftRightResend(ImageConsumer ic)

Запрашивает, чтобы данные изображения были переданы заданному ImageConsumer еще раз в порядке сверху вниз, слева направо.

Указано в:
requestTopDownLeftRightResend в интерфейсе ImageProducer
Параметры:
ic - указанный ImageConsumer
См. также:
ImageConsumer

setAnimated

public void setAnimated(boolean animated)

Преобразует это запоминающееся изображение в анимацию с несколькими кадрами или статическое изображение с одним кадром в зависимости от параметра animated.

Этот метод должен вызываться сразу после создания MemoryImageSource и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные данные для нескольких кадров. Если ImageConsumer добавляется в этот ImageProducer до установки этого флага, этот ImageConsumer увидит только моментальный снимок данных пикселей, доступных при подключении.

Параметры:
animated - true если изображение представляет собой анимацию с несколькими кадрами

setFullBufferUpdates

public void setFullBufferUpdates(boolean fullbuffers)

Указывает, должно ли это анимированное запоминающееся изображение всегда обновляться путем отправки всего буфера пикселей при каждом изменении. Этот флаг игнорируется, если флаг анимации не включен с помощью метода setAnimated().

Этот метод должен вызываться сразу после создания MemoryImageSource и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные подсказки по передаче пикселей.

Параметры:
fullbuffers - true если должен всегда отправляться весь буфер пикселей
См. также:
setAnimated(boolean)

newPixels

public void newPixels()

Отправляет весь новый буфер пикселей всем ImageConsumers, которые в настоящее время заинтересованы в данных для этого изображения, и уведомляет их о завершении кадра анимации. Этот метод действует только в том случае, если флаг анимации был включен с помощью метода setAnimated().

См. также:
newPixels(int, int, int, int, boolean), ImageConsumer, setAnimated(boolean)

newPixels

public void newPixels(int x,
                      int y,
                      int w,
                      int h)

Отправляет прямоугольную область буфера пикселей всем ImageConsumers, которые в настоящее время заинтересованы в данных для этого изображения, и уведомляет их о завершении кадра анимации. Этот метод действует только в том случае, если флаг анимации был включен с помощью метода setAnimated(). Если флаг полного обновления буфера был включен с помощью метода setFullBufferUpdates(), параметры прямоугольника будут игнорироваться, и всегда будет отправляться весь буфер.

Параметры:
x - координата x левого верхнего угла прямоугольника пикселей, который нужно отправить
y - координата y левого верхнего угла прямоугольника пикселей, который нужно отправить
w - ширина прямоугольника пикселей, который нужно отправить
h - высота прямоугольника пикселей, который нужно отправить
См. также:
newPixels(int, int, int, int, boolean), ImageConsumer, setAnimated(boolean), setFullBufferUpdates(boolean)

newPixels

public void newPixels(int x,
                      int y,
                      int w,
                      int h,
                      boolean framenotify)

Отправляет прямоугольную область буфера пикселей всем ImageConsumers, которые в настоящее время заинтересованы в данных для этого изображения. Если параметр framenotify равен true, потребители также уведомляются о завершении кадра анимации. Этот метод действует только в том случае, если флаг анимации был включен с помощью метода setAnimated(). Если флаг полного обновления буфера был включен с помощью метода setFullBufferUpdates(), параметры прямоугольника будут игнорироваться, и всегда будет отправляться весь буфер.

Параметры:
x - координата x левого верхнего угла прямоугольника пикселей, который нужно отправить
y - координата y левого верхнего угла прямоугольника пикселей, который нужно отправить
w - ширина прямоугольника пикселей, который нужно отправить
h - высота прямоугольника пикселей, который нужно отправить
framenotify - true если потребителям следует отправить уведомление SINGLEFRAMEDONE
См. также:
ImageConsumer, setAnimated(boolean), setFullBufferUpdates(boolean)

newPixels

public void newPixels(byte[] newpix,
                      ColorModel newmodel,
                      int offset,
                      int scansize)

Изменяет на новый массив байтов для хранения пикселей этого изображения. Если флаг анимации был включен с помощью метода setAnimated(), новые пиксели немедленно будут переданы всем ImageConsumers, которые в настоящее время заинтересованы в данных для этого изображения.

Параметры:
newpix - новый массив пикселей
newmodel - указанный ColorModel
offset - смещение в массиве
scansize - расстояние от одной строки пикселей до следующей в массиве
См. также:
newPixels(int, int, int, int, boolean), setAnimated(boolean)

newPixels

public void newPixels(int[] newpix,
                      ColorModel newmodel,
                      int offset,
                      int scansize)

Изменяет на новый массив целых чисел для хранения пикселей этого изображения. Если флаг анимации был включен с помощью метода setAnimated(), новые пиксели немедленно будут переданы всем ImageConsumers, которые в настоящее время заинтересованы в данных для этого изображения.

Параметры:
newpix - новый массив пикселей
newmodel - указанный ColorModel
offset - смещение в массиве
scansize - расстояние от одной строки пикселей до следующей в массиве
См. также:
newPixels(int, int, int, int, boolean), setAnimated(boolean)

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/MemoryImageSource.html

Spec-Zone .ru
спецификации, руководства, описания, API