Класс 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(ImageProducer ip,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize) |
Создаёт объект PixelGrabber для захвата прямоугольной области пикселей (x, y, w, h) из изображения, созданного указанным ImageProducer, в заданный массив. |
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) из указанного изображения в заданный массив. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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) из указанного изображения в заданный массив. Пиксели хранятся в массиве в формате ColorModel по умолчанию 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, в заданный массив. Пиксели хранятся в массиве в формате ColorModel по умолчанию 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, если для каждого вызова setPixels используется один и тот же ColorModel, в противном случае пиксели накапливаются в формате ColorModel по умолчанию RGB. Если параметр forceRGB равен true, то пиксели будут накапливаться в формате ColorModel по умолчанию RGB. Буфер выделяется PixelGrabber для хранения пикселей в любом случае. Если (w < 0) или (h < 0), то они будут по умолчанию соответствовать оставшейся ширине и высоте исходных данных при предоставлении этой информации.
- Параметры:
-
img- изображение, из которого извлекаются данные изображения -
x- координата x левого верхнего угла прямоугольника пикселей для извлечения из изображения, относительно размера изображения по умолчанию (без масштабирования) -
y- координата y левого верхнего угла прямоугольника пикселей для извлечения из изображения -
w- ширина прямоугольника пикселей для извлечения -
h- высота прямоугольника пикселей для извлечения -
forceRGB- true, если пиксели всегда должны преобразовываться в ColorModel по умолчанию RGB
Методы
startGrabbing
public void startGrabbing()
Запросить PixelGrabber для начала извлечения пикселей.
abortGrabbing
public void abortGrabbing()
Запросить PixelGrabber для прерывания извлечения изображения.
grabPixels
public boolean grabPixels()
throws InterruptedException Запросить Image или ImageProducer для начала доставки пикселей и ожидание, пока все пиксели в прямоугольнике будут доставлены.
- Возвращает:
- true, если пиксели были успешно извлечены, false при прерывании, ошибке или истечении времени ожидания
- Исключения:
-
InterruptedException- Другой поток прервал этот поток.
grabPixels
public boolean grabPixels(long ms)
throws InterruptedException Запросить Image или 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 в любое время, если исходное изображение использует более одной цветовой модели для доставки данных, массив объектов, возвращаемый этим методом, может изменяться до тех пор, пока извлечение изображения не будет завершено.
- Возвращает:
- либо массив байтов, либо массив целых чисел
- См. также:
-
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 до тех пор, пока цветовая модель, используемая ImageProducer, не станет известна. Поскольку PixelGrabber может перейти к накоплению данных в стандартной цветовой модели RGB в любое время, если исходное изображение использует более одной цветовой модели для доставки данных, объект 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/PixelGrabber.html