Класс PixelGrabber
- java.lang.Object
-
- java.awt.image.PixelGrabber
- Все реализуемые интерфейсы:
- ImageConsumer
public class PixelGrabber extends Object implements ImageConsumer
Класс PixelGrabber реализует интерфейс ImageConsumer, который можно прикрепить к объекту Image или ImageProducer для получения подмножества пикселей в этом изображении. Вот пример:
public void handlesinglepixel(int x, int y, int pixel) {
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel ) & 0xff;
// Deal with the pixel as necessary...
}
public void handlepixels(Image img, int x, int y, int w, int h) {
int[] pixels = new int[w * h];
PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
try {
pg.grabPixels();
} catch (InterruptedException e) {
System.err.println("interrupted waiting for pixels!");
return;
}
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
System.err.println("image fetch aborted or errored");
return;
}
for (int j = 0; j < h; j++) {
for (int i = 0; i < w; i++) {
handlesinglepixel(x+i, y+j, pixels[j * w + i]);
}
}
}- См. также:
ColorModel.getRGBdefault()
Поля
Поля, унаследованные от интерфейса java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT Конструкторы
| Конструктор и описание |
|---|
PixelGrabber(Image img,
int x,
int y,
int w,
int h,
boolean forceRGB) Создаёт объект PixelGrabber для захвата прямоугольного фрагмента пикселей (x, y, w, h) из указанного изображения. |
PixelGrabber(Image img,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize) Создаёт объект PixelGrabber для захвата прямоугольного фрагмента пикселей (x, y, w, h) из указанного изображения в заданный массив. |
PixelGrabber(ImageProducer ip,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize) Создаёт объект PixelGrabber для захвата прямоугольного фрагмента пикселей (x, y, w, h) из изображения, созданного указанным ImageProducer, в заданный массив. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
abortGrabbing() Запрашивает у PixelGrabber прервать загрузку изображения. |
ColorModel |
getColorModel() Получает ColorModel для пикселей, хранящихся в массиве. |
int |
getHeight() Получает высоту буфера пикселей (после корректировки на высоту изображения). |
Object |
getPixels() Получает буфер пикселей. |
int |
getStatus() Возвращает состояние пикселей. |
int |
getWidth() Получает ширину буфера пикселей (после корректировки на ширину изображения). |
boolean |
grabPixels() Запрашивает у Image или ImageProducer начать доставку пикселей и ожидает, пока все пиксели в прямоугольнике будут доставлены. |
boolean |
grabPixels(long ms) Запрашивает у Image или ImageProducer начать доставку пикселей и ожидает, пока все пиксели в прямоугольнике будут доставлены или до истечения заданного таймаута. |
void |
imageComplete(int status) Метод imageComplete является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setColorModel(ColorModel model) Метод setColorModel является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setDimensions(int width,
int height) Метод setDimensions является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setHints(int hints) Метод setHints является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
byte[] pixels,
int srcOff,
int srcScan) Метод setPixels является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
int[] pixels,
int srcOff,
int srcScan) Метод setPixels является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
setProperties(Hashtable<?,?> props) Метод setProperties является частью API ImageConsumer, который должен реализовать этот класс для получения пикселей. |
void |
startGrabbing() Запрашивает у PixelGrabber начать извлечение пикселей. |
int |
status() Возвращает состояние пикселей. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
PixelGrabber
public PixelGrabber(Image img,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize) Создайте объект PixelGrabber для извлечения прямоугольного фрагмента пикселей (x, y, w, h) из указанного изображения в заданный массив. Пиксели хранятся в массиве в формате RGB по умолчанию. Данные RGB для пикселя (i, j), где (i, j) находится внутри прямоугольника (x, y, w, h), хранятся в массиве по адресу pix[(j - y) * scansize + (i - x) + off].
- Параметры:
-
img- изображение, из которого извлекаются пиксели -
x- координата x левого верхнего угла прямоугольника пикселей для извлечения из изображения, относительно размера изображения по умолчанию (без масштабирования) -
y- координата y левого верхнего угла прямоугольника пикселей для извлечения из изображения -
w- ширина прямоугольника пикселей для извлечения -
h- высота прямоугольника пикселей для извлечения -
pix- массив целых чисел, который будет использоваться для хранения RGB-пикселей, извлечённых из изображения -
off- смещение в массиве, где будет храниться первый пиксель -
scansize- расстояние между строками пикселей в массиве - См. также:
ColorModel.getRGBdefault()
PixelGrabber
public PixelGrabber(ImageProducer ip,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize) Создайте объект PixelGrabber для извлечения прямоугольного фрагмента пикселей (x, y, w, h) из изображения, производимого указанным ImageProducer, в заданный массив. Пиксели хранятся в массиве в формате RGB по умолчанию. Данные RGB для пикселя (i, j), где (i, j) находится внутри прямоугольника (x, y, w, h), хранятся в массиве по адресу pix[(j - y) * scansize + (i - x) + off].
- Параметры:
-
ip-ImageProducer, производящий изображение, из которого извлекаются пиксели -
x- координата x левого верхнего угла прямоугольника пикселей для извлечения из изображения, относительно размера изображения по умолчанию (без масштабирования) -
y- координата y левого верхнего угла прямоугольника пикселей для извлечения из изображения -
w- ширина прямоугольника пикселей для извлечения -
h- высота прямоугольника пикселей для извлечения -
pix- массив целых чисел, который будет использоваться для хранения RGB-пикселей, извлечённых из изображения -
off- смещение в массиве, где будет храниться первый пиксель -
scansize- расстояние между строками пикселей в массиве - См. также:
ColorModel.getRGBdefault()
PixelGrabber
public PixelGrabber(Image img,
int x,
int y,
int w,
int h,
boolean forceRGB) Создайте объект PixelGrabber для извлечения прямоугольного фрагмента пикселей (x, y, w, h) из указанного изображения. Пиксели накапливаются в исходном формате ColorModel, если используется тот же ColorModel для каждого вызова setPixels, в противном случае пиксели накапливаются в формате RGB по умолчанию. Если параметр forceRGB равен true, пиксели будут накапливаться в формате RGB по умолчанию. Буфер для хранения пикселей выделяется PixelGrabber в любом случае. Если (w < 0) или (h < 0), они по умолчанию будут равны оставшейся ширине и высоте исходных данных, когда эта информация будет предоставлена.
- Параметры:
-
img- изображение, из которого извлекаются данные изображения -
x- координата x левого верхнего угла прямоугольника пикселей для извлечения из изображения, относительно размера изображения по умолчанию (без масштабирования) -
y- координата y левого верхнего угла прямоугольника пикселей для извлечения из изображения -
w- ширина прямоугольника пикселей для извлечения -
h- высота прямоугольника пикселей для извлечения -
forceRGB- true, если пиксели всегда должны преобразовываться в формат RGB по умолчанию
Методы
startGrabbing
public void startGrabbing()
Запросите PixelGrabber начать извлечение пикселей.
abortGrabbing
public void abortGrabbing()
Запросите PixelGrabber прервать извлечение изображения.
grabPixels
public boolean grabPixels()
throws InterruptedException Запросите изображение или ImageProducer начать передачу пикселей и подождите, пока все пиксели в прямоугольнике интереса будут переданы.
- Возвращает:
- true, если пиксели были успешно извлечены, false при прерывании, ошибке или истечении времени ожидания
- Исключения:
-
InterruptedException- Другая нить прервала эту нить.
grabPixels
public boolean grabPixels(long ms)
throws InterruptedException Запросите изображение или ImageProducer начать передачу пикселей и подождите, пока все пиксели в прямоугольнике интереса будут переданы или истечёт указанное время ожидания. Этот метод ведет себя следующим образом, в зависимости от значения ms:
- Если
ms == 0, ждёт, пока все пиксели будут переданы - Если
ms > 0, ждёт, пока все пиксели будут переданы до истечения времени ожидания. - Если
ms < 0, возвращаетtrueесли все пиксели получены,falseв противном случае и не ждёт.
- Параметры:
-
ms- количество миллисекунд ожидания доставки пикселей изображения перед истечением времени ожидания - Возвращает:
- true, если пиксели были успешно извлечены, false при прерывании, ошибке или истечении времени ожидания
- Исключения:
-
InterruptedException- Другая нить прервала эту нить.
getStatus
public int getStatus()
Возвращает состояние пикселей. Возвращаются флаги ImageObserver, представляющие доступную информацию о пикселях.
- Возвращает:
- побитовое ИЛИ всех соответствующих флагов ImageObserver
- См. также:
ImageObserver
getWidth
public int getWidth()
Получить ширину буфера пикселей (после корректировки на ширину изображения). Если ширина прямоугольника пикселей для извлечения не была указана, эта информация будет доступна только после того, как изображение передаст размеры.
- Возвращает:
- конечная ширина, используемая для буфера пикселей, или -1, если ширина еще неизвестна
- См. также:
getStatus()
getHeight
public int getHeight()
Получить высоту буфера пикселей (после корректировки на высоту изображения). Если высота прямоугольника пикселей для извлечения не была указана, эта информация будет доступна только после того, как изображение передаст размеры.
- Возвращает:
- конечная высота, используемая для буфера пикселей, или -1, если высота еще неизвестна
- См. также:
getStatus()
getPixels
public Object getPixels()
Получить буфер пикселей. Если PixelGrabber не был создан с явным буфером пикселей для хранения пикселей, этот метод вернёт null до тех пор, пока размер и формат данных изображения не будут известны. Поскольку PixelGrabber может в любой момент перейти на накопление данных в формате RGB по умолчанию, если исходное изображение использует более одного ColorModel для передачи данных, объект массива, возвращаемый этим методом, может меняться до завершения захвата изображения.
- Возвращает:
- массив байтов или массив целых чисел
- См. также:
-
getStatus(),setPixels(int, int, int, int, ColorModel, byte[], int, int),setPixels(int, int, int, int, ColorModel, int[], int, int)
getColorModel
public ColorModel getColorModel()
Получить ColorModel для пикселей, хранящихся в массиве. Если PixelGrabber был создан с явным буфером пикселей, этот метод всегда возвращает формат RGB по умолчанию, в противном случае он может возвращать null до тех пор, пока ColorModel, используемый ImageProducer, не будет известен. Поскольку PixelGrabber может в любой момент перейти на накопление данных в формате RGB по умолчанию, если исходное изображение использует более одного ColorModel для передачи данных, объект ColorModel, возвращаемый этим методом, может меняться до тех пор, пока захват изображения не завершится, и может не отражать ни один из объектов ColorModel, используемых ImageProducer для передачи пикселей.
- Возвращает:
- объект ColorModel, используемый для хранения пикселей
- См. также:
-
getStatus(),ColorModel.getRGBdefault(),setColorModel(ColorModel)
setDimensions
public void setDimensions(int width,
int height) Метод setDimensions является частью API ImageConsumer, который должен реализовывать этот класс для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, поскольку такая операция может привести к проблемам с извлечением запрошенных пикселей.
- Определено в:
-
setDimensionsв интерфейсеImageConsumer - Параметры:
-
width- ширина размера -
height- высота размера
setHints
public void setHints(int hints)
Метод setHints является частью API ImageConsumer, который должен реализовывать этот класс для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, поскольку такая операция может привести к проблемам с извлечением запрошенных пикселей.
- Определено в:
-
setHintsв интерфейсеImageConsumer - Параметры:
-
hints- набор подсказок для обработки пикселей
setProperties
public void setProperties(Hashtable<?,?> props)
Метод setProperties является частью API ImageConsumer, который должен реализовывать этот класс для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, поскольку такая операция может привести к проблемам с извлечением запрошенных пикселей.
- Определено в:
-
setPropertiesв интерфейсеImageConsumer - Параметры:
-
props- список свойств
setColorModel
public void setColorModel(ColorModel model)
Метод setColorModel является частью API ImageConsumer, которое этот класс должен реализовать для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, так как это может привести к проблемам с получением запрошенных пикселей.
- Указано в:
-
setColorModelв интерфейсеImageConsumer - Параметры:
-
model- указанныйColorModel - См. также:
getColorModel()
setPixels
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
byte[] pixels,
int srcOff,
int srcScan) Метод setPixels является частью API ImageConsumer, который этот класс должен реализовать для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, так как это может привести к проблемам с получением запрошенных пикселей.
- Указано в:
-
setPixelsв интерфейсеImageConsumer - Параметры:
-
srcX- координата X верхнего левого угла области пикселей, подлежащей установке -
srcY- координата Y верхнего левого угла области пикселей, подлежащей установке -
srcW- ширина области пикселей -
srcH- высота области пикселей -
model- указанныйColorModel -
pixels- массив пикселей -
srcOff- смещение в массиве пикселей -
srcScan- расстояние между строками пикселей в массиве пикселей - См. также:
getPixels()
setPixels
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
int[] pixels,
int srcOff,
int srcScan) Метод setPixels является частью API ImageConsumer, который этот класс должен реализовать для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, так как это может привести к проблемам с получением запрошенных пикселей.
- Указано в:
-
setPixelsв интерфейсеImageConsumer - Параметры:
-
srcX- координата X верхнего левого угла области пикселей, подлежащей установке -
srcY- координата Y верхнего левого угла области пикселей, подлежащей установке -
srcW- ширина области пикселей -
srcH- высота области пикселей -
model- указанныйColorModel -
pixels- массив пикселей -
srcOff- смещение в массиве пикселей -
srcScan- расстояние между строками пикселей в массиве пикселей - См. также:
getPixels()
imageComplete
public void imageComplete(int status)
Метод imageComplete является частью API ImageConsumer, который этот класс должен реализовать для получения пикселей.
Примечание: Этот метод предназначен для вызова ImageProducer изображения, пиксели которого извлекаются. Разработчики, использующие этот класс для извлечения пикселей из изображения, должны избегать прямого вызова этого метода, так как это может привести к проблемам с получением запрошенных пикселей.
- Указано в:
-
imageCompleteв интерфейсеImageConsumer - Параметры:
-
status- состояние загрузки изображения - См. также:
ImageProducer.removeConsumer(java.awt.image.ImageConsumer)
status
public int status()
Возвращает состояние пикселей. Возвращаются флаги ImageObserver, представляющие доступную информацию о пикселях. Этот метод и getStatus имеют одинаковую реализацию, но getStatus является предпочтительным методом, так как он соответствует соглашению об именовании методов извлечения информации с формой "getXXX".
- Возвращает:
- побитовое ИЛИ всех соответствующих флагов ImageObserver
- См. также:
-
ImageObserver,getStatus()
© 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.