Класс SinglePixelPackedSampleModel
- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.SinglePixelPackedSampleModel
public class SinglePixelPackedSampleModel extends SampleModel
Этот класс представляет данные пикселей, упакованные таким образом, что N образцов, составляющих один пиксель, хранятся в одном элементе массива данных, и каждый элемент массива данных содержит образцы только для одного пикселя. Этот класс поддерживает типы данных TYPE_BYTE, TYPE_USHORT, TYPE_INT. Все элементы массива данных находятся в первом банке DataBuffer. Предоставляются методы-обработчики, чтобы данные изображения можно было напрямую манипулировать. Шаг сканирования — это количество элементов массива данных между заданным образцом и соответствующим образцом в том же столбце следующей строки сканирования. Маски битов — это маски, необходимые для извлечения образцов, представляющих полосы пикселя. Смещения битов — это смещения в битах в элементе массива данных образцов, представляющих полосы пикселя.
Следующий код иллюстрирует извлечение битов образца, представляющего полосу b для пикселя x,y из DataBuffer data.
int sample = data.getElem(y * scanlineStride + x);
sample = (sample & bitMasks[b]) >>> bitOffsets[b];
Поля
Поля, объявленные в классе java.awt.image.SampleModel
dataType, height, numBands, width Конструкторы
| Конструктор | Описание |
|---|---|
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks) | Создает SinglePixelPackedSampleModel с полосами bitMasks.length. |
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks) | Создает SinglePixelPackedSampleModel с полосами bitMasks.length и шагом строки сканирования, равным scanlineStride элементам массива данных. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
SampleModel | createCompatibleSampleModel(int w,
int h) | Создает новый SinglePixelPackedSampleModel с заданной шириной и высотой. |
DataBuffer | createDataBuffer() | Создает DataBuffer, соответствующий этому SinglePixelPackedSampleModel. |
SampleModel | createSubsetSampleModel(int[] bands) | Это создает новый SinglePixelPackedSampleModel с подмножеством полос этого SinglePixelPackedSampleModel. |
int[] | getBitMasks() | Возвращает маски битов для всех полос. |
int[] | getBitOffsets() | Возвращает смещения битов в элементе массива данных, представляющем пиксель для всех полос. |
Object | getDataElements(int x,
int y,
Object obj,
DataBuffer data) | Возвращает данные для одного пикселя в примитивном массиве типа TransferType. |
int | getNumDataElements() | Возвращает количество элементов данных, необходимых для передачи одного пикселя с помощью методов getDataElements и setDataElements. |
int | getOffset(int x,
int y) | Возвращает смещение (в элементах массива данных) пикселя (x,y). |
int[] | getPixel(int x,
int y,
int[] iArray,
DataBuffer data) | Возвращает все образцы для указанного пикселя в массиве int. |
int[] | getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data) | Возвращает все образцы для указанного прямоугольника пикселей в массиве int, по одному образцу на элемент массива. |
int | getSample(int x,
int y,
int b,
DataBuffer data) | Возвращает образцы в виде int в указанной полосе для пикселя, расположенного в (x,y). |
int[] | getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) | Возвращает образцы для указанной полосы для указанного прямоугольника пикселей в массиве int, по одному образцу на элемент массива. |
int[] | getSampleSize() | Возвращает количество битов на образец для всех полос. |
int | getSampleSize(int band) | Возвращает количество битов на образец для указанной полосы. |
int | getScanlineStride() | Возвращает шаг строки сканирования этого SinglePixelPackedSampleModel. |
void | setDataElements(int x,
int y,
Object obj,
DataBuffer data) | Устанавливает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType. |
void | setPixel(int x,
int y,
int[] iArray,
DataBuffer data) | Устанавливает пиксель в DataBuffer, используя массив int образцов для ввода. |
void | setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data) | Устанавливает все образцы для прямоугольника пикселей из массива int, содержащего по одному образцу на элемент массива. |
void | setSample(int x,
int y,
int b,
int s,
DataBuffer data) | Устанавливает образец в указанной полосе для пикселя, расположенного в (x,y) в DataBuffer, используя int для ввода. |
void | setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) | Устанавливает образцы в указанной полосе для указанного прямоугольника пикселей из массива int, содержащего по одному образцу на элемент массива. |
Методы, объявленные в классе java.awt.image.SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks) Создает SinglePixelPackedSampleModel с полосами bitMasks.length. Каждый образец хранится в элементе массива данных в позиции соответствующей маски битов. Каждая маска битов должна быть непрерывной, и маски не должны перекрываться. Маски битов, превышающие емкость типа данных, усекаются.
- Параметры:
-
dataType- Тип данных для хранения образцов. -
w- Ширина (в пикселях) области данных изображения, описываемой. -
h- Высота (в пикселях) области данных изображения, описываемой. -
bitMasks- Маски битов для всех полос. - Исключения:
-
IllegalArgumentException- еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks) Создает SinglePixelPackedSampleModel с полосами bitMasks.length и шагом строки сканирования, равным scanlineStride элементам массива данных. Каждый образец хранится в элементе массива данных в позиции соответствующей маски битов. Каждая маска битов должна быть непрерывной, и маски не должны перекрываться. Маски битов, превышающие емкость типа данных, усекаются.
- Параметры:
-
dataType- Тип данных для хранения образцов. -
w- Ширина (в пикселях) области данных изображения, описываемой. -
h- Высота (в пикселях) области данных изображения, описываемой. -
scanlineStride- Шаг строки изображения. -
bitMasks- Маски битов для всех полос. - Исключения:
-
IllegalArgumentException- еслиwилиhне больше 0 -
IllegalArgumentException- если любая маска вbitMaskне непрерывна -
IllegalArgumentException- еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT
Методы
getNumDataElements
public int getNumDataElements()
Возвращает количество элементов данных, необходимых для передачи одного пикселя через методы getDataElements и setDataElements. Для SinglePixelPackedSampleModel это один.
- Определено в:
-
getNumDataElementsв классеSampleModel - Возвращает:
- количество элементов данных.
- См. также:
-
SampleModel.getDataElements(int, int, Object, DataBuffer),SampleModel.getDataElements(int, int, int, int, Object, DataBuffer),SampleModel.setDataElements(int, int, Object, DataBuffer),SampleModel.setDataElements(int, int, int, int, Object, DataBuffer),SampleModel.getTransferType()
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w,
int h) Создаёт новый SinglePixelPackedSampleModel с указанной шириной и высотой. Новый SinglePixelPackedSampleModel будет иметь тот же тип данных хранения и битовые маски, что и этот SinglePixelPackedSampleModel.
- Определено в:
-
createCompatibleSampleModelв классеSampleModel - Параметры:
-
w- ширина полученногоSampleModel -
h- высота полученногоSampleModel - Возвращает:
- SinglePixelPackedSampleModel с указанной шириной и высотой.
- Исключения:
-
IllegalArgumentException- еслиwилиhне больше 0
createDataBuffer
public DataBuffer createDataBuffer()
Создаёт DataBuffer, соответствующий этому SinglePixelPackedSampleModel. Тип данных и размер DataBuffer будут согласованы с этим SinglePixelPackedSampleModel. DataBuffer будет иметь один банк.
- Определено в:
-
createDataBufferв классеSampleModel - Возвращает:
- DataBuffer, соответствующий этому SinglePixelPackedSampleModel.
getSampleSize
public int[] getSampleSize()
Возвращает количество бит на образец для всех каналов.
- Определено в:
-
getSampleSizeв классеSampleModel - Возвращает:
- размер образцов для всех каналов.
getSampleSize
public int getSampleSize(int band)
Возвращает количество бит на образец для указанного канала.
- Определено в:
-
getSampleSizeв классеSampleModel - Параметры:
-
band- указанный канал - Возвращает:
- размер образцов указанного канала.
getOffset
public int getOffset(int x,
int y) Возвращает смещение (в элементах массива данных) пикселя (x, y). Элемент данных, содержащий пиксель x,y, может быть получен из DataBuffer data с SinglePixelPackedSampleModel sppsm следующим образом:
data.getElem(sppsm.getOffset(x, y));
- Параметры:
-
x- координата X указанного пикселя -
y- координата Y указанного пикселя - Возвращает:
- смещение указанного пикселя.
getBitOffsets
public int[] getBitOffsets()
Возвращает битовые смещения в элементе массива данных, представляющем пиксель для всех каналов.
- Возвращает:
- битовые смещения, представляющие пиксель для всех каналов.
getBitMasks
public int[] getBitMasks()
Возвращает битовые маски для всех каналов.
- Возвращает:
- битовые маски для всех каналов.
getScanlineStride
public int getScanlineStride()
Возвращает шаг строки сканирования для этого SinglePixelPackedSampleModel.
- Возвращает:
- шаг строки сканирования этого SinglePixelPackedSampleModel.
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
Создаёт новый SinglePixelPackedSampleModel с подмножеством каналов этого SinglePixelPackedSampleModel. Новый SinglePixelPackedSampleModel может использоваться с любым DataBuffer, с которым может использоваться существующий SinglePixelPackedSampleModel. Новая комбинация SinglePixelPackedSampleModel/DataBuffer будет представлять изображение с подмножеством каналов исходной комбинации SinglePixelPackedSampleModel/DataBuffer.
- Определено в:
-
createSubsetSampleModelв классеSampleModel - Параметры:
-
bands- подмножество каналов этого SinglePixelPackedSampleModel - Возвращает:
- SinglePixelPackedSampleModel с подмножеством каналов этого SinglePixelPackedSampleModel.
- Исключения:
-
RasterFormatException- если длина аргумента каналов больше, чем количество каналов в модели образцов.
getDataElements
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data) Возвращает данные для одного пикселя в массиве примитивного типа TransferType. Для SinglePixelPackedSampleModel массив будет иметь один элемент, а тип будет таким же, как тип данных хранения. Как правило, obj должен передаваться как null, чтобы объект создавался автоматически и был правильного примитивного типа.
Следующий код иллюстрирует передачу данных для одного пикселя из DataBuffer db1, чья структура хранения описана SinglePixelPackedSampleModel sppsm1, в DataBuffer db2, чья структура хранения описана SinglePixelPackedSampleModel sppsm2. Передача, как правило, будет более эффективной, чем использование getPixel/setPixel.
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null,
db1), db2); Использование getDataElements/setDataElements для передачи между двумя парами DataBuffer/SampleModel допустимо, если SampleModels имеют одинаковое количество каналов, соответствующие каналы имеют одинаковое количество бит на образец, и TransferTypes одинаковы. Если obj не null, он должен быть массивом примитивного типа TransferType. В противном случае будет брошено ClassCastException. Может быть брошено ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ, или если obj не null и не достаточно большой, чтобы содержать данные пикселя.
- Определено в:
-
getDataElementsв классеSampleModel - Параметры:
-
x- координата X расположения пикселя. -
y- координата Y расположения пикселя. -
obj- если не null, массив примитивов, в котором будут возвращены данные пикселя. -
data- DataBuffer, содержащий данные изображения. - Возвращает:
- данные для указанного пикселя.
- См. также:
setDataElements(int, int, Object, DataBuffer)
getPixel
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data) Возвращает все образцы для указанного пикселя в массиве int. Может быть брошено ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
getPixelв классеSampleModel - Параметры:
-
x- координата X расположения пикселя. -
y- координата Y расположения пикселя. -
iArray- если не null, возвращает образцы в этом массиве -
data- DataBuffer, содержащий данные изображения. - Возвращает:
- все образцы для указанного пикселя.
- См. также:
setPixel(int, int, int[], DataBuffer)
getPixels
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data) Возвращает все образцы для заданного прямоугольника пикселей в массиве int, по одному образцу на элемент массива. Может быть брошено ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
getPixelsв классеSampleModel - Параметры:
-
x- координата X верхнего левого пикселя. -
y- координата Y верхнего левого пикселя. -
w- ширина прямоугольника пикселей. -
h- высота прямоугольника пикселей. -
iArray- если не null, возвращает образцы в этом массиве. -
data- DataBuffer, содержащий данные изображения. - Возвращает:
- все образцы для указанной области пикселей.
- См. также:
setPixels(int, int, int, int, int[], DataBuffer)
getSample
public int getSample(int x,
int y,
int b,
DataBuffer data) Возвращает в виде int образец в указанном канале для пикселя, расположенного в координатах (x, y). Может быть брошено ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Определено в:
-
getSampleв классеSampleModel - Параметры:
-
x- координата X расположения пикселя. -
y- координата Y расположения пикселя. -
b- канал для возвращения. -
data- DataBuffer, содержащий данные изображения. - Возвращает:
- образец в указанном канале для указанного пикселя.
- См. также:
setSample(int, int, int, int, DataBuffer)
getSamples
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) Возвращает образцы для указанного канала для указанного прямоугольника пикселей в массиве int, по одному образцу на элемент массива. Может быть брошено ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
getSamplesв классеSampleModel - Параметры:
-
x- координата X верхнего левого пикселя. -
y- координата Y верхнего левого пикселя. -
w- ширина прямоугольника пикселей. -
h- высота прямоугольника пикселей. -
b- канал для возвращения. -
iArray- если не null, возвращает образцы в этом массиве. -
data- DataBuffer, содержащий данные изображения. - Возвращает:
- образцы для указанного канала для указанной области пикселей.
- См. также:
setSamples(int, int, int, int, int, int[], DataBuffer)
setDataElements
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data) Устанавливает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType. Для SinglePixelPackedSampleModel только первый элемент массива будет содержать действительные данные, и тип массива должен совпадать с типом данных хранения SinglePixelPackedSampleModel.
Следующий код демонстрирует передачу данных для одного пикселя из DataBuffer db1, чья структура хранения описана SinglePixelPackedSampleModel sppsm1, в DataBuffer db2, чья структура хранения описана SinglePixelPackedSampleModel sppsm2. Передача данных обычно будет более эффективной, чем использование getPixel/setPixel.
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null,
db1), db2); Использование getDataElements/setDataElements для передачи между двумя парами DataBuffer/SampleModel допустимо, если SampleModels имеют одинаковое количество каналов, соответствующие каналы имеют одинаковое количество бит на образец, и TransferTypes одинаковы. obj должен быть примитивным массивом типа TransferType. В противном случае будет брошено исключение ClassCastException. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ или если obj недостаточно велик для хранения данных пикселя.
- Определено в:
-
setDataElementsв классеSampleModel - Параметры:
-
x- Координата X расположения пикселя. -
y- Координата Y расположения пикселя. -
obj- Примитивный массив, содержащий данные пикселя. -
data- DataBuffer, содержащий данные изображения. - См. также:
getDataElements(int, int, Object, DataBuffer)
setPixel
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data) Устанавливает пиксель в DataBuffer, используя массив int для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
setPixelв классеSampleModel - Параметры:
-
x- Координата X расположения пикселя. -
y- Координата Y расположения пикселя. -
iArray- Входные данные образцов в массиве int. -
data- DataBuffer, содержащий данные изображения. - См. также:
getPixel(int, int, int[], DataBuffer)
setPixels
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data) Устанавливает все образцы для прямоугольника пикселей из массива int, содержащего по одному образцу на элемент массива. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
setPixelsв классеSampleModel - Параметры:
-
x- Координата X верхнего левого пикселя. -
y- Координата Y верхнего левого пикселя. -
w- Ширина прямоугольника пикселей. -
h- Высота прямоугольника пикселей. -
iArray- Входные данные образцов в массиве int. -
data- DataBuffer, содержащий данные изображения. - См. также:
getPixels(int, int, int, int, int[], DataBuffer)
setSample
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data) Устанавливает образец в указанном канале для пикселя, расположенного в (x,y) в DataBuffer, используя int для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Определено в:
-
setSampleв классеSampleModel - Параметры:
-
x- Координата X расположения пикселя. -
y- Координата Y расположения пикселя. -
b- Канал для установки. -
s- Входной образец как int. -
data- DataBuffer, содержащий данные изображения. - См. также:
getSample(int, int, int, DataBuffer)
setSamples
public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) Устанавливает образцы в указанном канале для указанного прямоугольника пикселей из массива int, содержащего по одному образцу на элемент массива. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Переопределяет:
-
setSamplesв классеSampleModel - Параметры:
-
x- Координата X верхнего левого пикселя. -
y- Координата Y верхнего левого пикселя. -
w- Ширина прямоугольника пикселей. -
h- Высота прямоугольника пикселей. -
b- Канал для установки. -
iArray- Входные данные образцов в массиве int. -
data- DataBuffer, содержащий данные изображения. - См. также:
getSamples(int, int, int, int, int, int[], DataBuffer)
© 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/SinglePixelPackedSampleModel.html