Класс MultiPixelPackedSampleModel
public class MultiPixelPackedSampleModel extends SampleModel
MultiPixelPackedSampleModel представляет изображения с одной полосой и может упаковывать несколько пикселей с одним отсчётом в один элемент данных. Пиксели не могут занимать несколько элементов данных. Тип данных может быть DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT или DataBuffer.TYPE_INT. Число битов на пиксель должно быть степенью двойки, а число пикселей, помещающихся в один элемент данных, также должно быть степенью двойки. Шаг пикселя в битах равен числу битов на пиксель. Шаг строки сканирования задаётся в элементах данных, при этом последние несколько элементов данных могут быть дополнены неиспользуемыми пикселями. Смещение данных в битах — это смещение в битах от начала DataBuffer до первого пикселя; оно должно быть кратно шагу пикселя в битах. Следующий фрагмент кода демонстрирует извлечение битов для пикселя x, y из DataBuffer data и сохранение данных пикселя в элементах данных типа dataType:
int dataElementSize = DataBuffer.getDataTypeSize(dataType);
int bitnum = dataBitOffset + x*pixelBitStride;
int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);
int shift = dataElementSize - (bitnum & (dataElementSize-1))
- pixelBitStride;
int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
Краткое описание полей
Поля, объявленные в классе SampleModel
dataType, height, numBands, width | Модификатор и тип | Поле | Описание |
|---|---|---|
protected int |
dataType |
Тип данных DataBuffer, в котором хранятся данные пикселей. |
protected int |
height |
Высота в пикселях области данных изображения, описываемой этим SampleModel. |
protected int |
numBands |
Количество полос данных изображения, описываемого этим SampleModel. |
protected int |
width |
Ширина в пикселях области данных изображения, описываемой этим SampleModel. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MultiPixelPackedSampleModel |
Создает MultiPixelPackedSampleModel с указанными типом данных, шириной, высотой и количеством битов на пиксель. |
MultiPixelPackedSampleModel |
Создает MultiPixelPackedSampleModel с указанными типом данных, шириной, высотой, количеством битов на пиксель, шагом строки сканирования и смещением бита данных. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
SampleModel |
createCompatibleSampleModel |
Создает новый MultiPixelPackedSampleModel с указанными шириной и высотой. |
DataBuffer |
createDataBuffer() |
Создает DataBuffer, соответствующий этому MultiPixelPackedSampleModel. |
SampleModel |
createSubsetSampleModel |
Создает новый MultiPixelPackedSampleModel с подмножеством полос этого MultiPixelPackedSampleModel. |
int |
getBitOffset |
Возвращает смещение в битах относительно элемента данных, в котором он хранится, для x-го пикселя строки сканирования. |
int |
getDataBitOffset() |
Возвращает смещение бита данных в битах. |
Object |
getDataElements |
Возвращает данные для одного пикселя в примитивном массиве типа TransferType. |
int |
getNumDataElements() |
Возвращает количество элементов данных, необходимых для передачи одного пикселя с помощью методов getDataElements(int, int, Object, DataBuffer) и setDataElements(int, int, Object, DataBuffer). |
int |
getOffset |
Возвращает смещение пикселя (x, y) в элементах массива данных. |
int[] |
getPixel |
Возвращает указанный пиксель одной полосы в первом элементе массива int. |
int |
getPixelBitStride() |
Возвращает шаг пикселя в битах. |
int |
getSample |
Возвращает в виде int отсчет указанной полосы для пикселя, расположенного в точке (x, y). |
int[] |
getSampleSize() |
Возвращает количество битов на отсчет для всех полос. |
int |
getSampleSize |
Возвращает количество битов на отсчет для указанной полосы. |
int |
getScanlineStride() |
Возвращает шаг строки сканирования. |
int |
getTransferType() |
Возвращает TransferType, используемый для передачи пикселей посредством методов getDataElements и setDataElements. |
void |
setDataElements |
Задает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType. |
void |
setPixel |
Задает пиксель в DataBuffer, используя для ввода массив int. |
void |
setSample |
Задает отсчет указанной полосы для пикселя, расположенного в точке (x, y), в DataBuffer, используя для ввода int. |
Методы, объявленные в классе SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamples | Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
getDataElements |
Возвращает данные пикселей для указанного прямоугольника пикселей в примитивном массиве типа TransferType. |
final int |
getDataType() |
Возвращает тип данных DataBuffer, в котором хранятся данные пикселей. |
final int |
getHeight() |
Возвращает высоту в пикселях. |
final int |
getNumBands() |
Возвращает общее количество полос данных изображения. |
double[] |
getPixel |
Возвращает отсчеты указанного пикселя в массиве double. |
float[] |
getPixel |
Возвращает отсчеты указанного пикселя в массиве float. |
double[] |
getPixels |
Возвращает все отсчеты для прямоугольника пикселей в массиве double, по одному отсчету на элемент массива. |
float[] |
getPixels |
Возвращает все отсчеты для прямоугольника пикселей в массиве float, по одному отсчету на элемент массива. |
int[] |
getPixels |
Возвращает все отсчеты для прямоугольника пикселей в массиве int, по одному отсчету на элемент массива. |
double |
getSampleDouble |
Возвращает отсчет указанной полосы для пикселя, расположенного в точке (x,y), в виде double. |
float |
getSampleFloat |
Возвращает отсчет указанной полосы для пикселя, расположенного в точке (x,y), в виде float. |
double[] |
getSamples |
Возвращает отсчеты указанной полосы для указанного прямоугольника пикселей в массиве double, по одному отсчету на элемент массива. |
float[] |
getSamples |
Возвращает отсчеты указанной полосы для указанного прямоугольника пикселей в массиве float, по одному отсчету на элемент массива. |
int[] |
getSamples |
Возвращает отсчеты указанной полосы для указанного прямоугольника пикселей в массиве int, по одному отсчету на элемент массива. |
final int |
getWidth() |
Возвращает ширину в пикселях. |
void |
setDataElements |
Задает данные для прямоугольника пикселей в указанном DataBuffer из примитивного массива типа TransferType. |
void |
setPixel |
Задает пиксель в DataBuffer, используя для ввода массив отсчетов double. |
void |
setPixel |
Задает пиксель в DataBuffer, используя для ввода массив отсчетов float. |
void |
setPixels |
Задает все отсчеты прямоугольника пикселей из массива double, содержащего по одному отсчету на элемент массива. |
void |
setPixels |
Задает все отсчеты прямоугольника пикселей из массива float, содержащего по одному отсчету на элемент массива. |
void |
setPixels |
Задает все отсчеты прямоугольника пикселей из массива int, содержащего по одному отсчету на элемент массива. |
void |
setSample |
Задает отсчет указанной полосы для пикселя, расположенного в точке (x,y), в DataBuffer, используя для ввода значение double. |
void |
setSample |
Задает отсчет указанной полосы для пикселя, расположенного в точке (x,y), в DataBuffer, используя для ввода значение float. |
void |
setSamples |
Задает отсчеты указанной полосы для указанного прямоугольника пикселей из массива double, содержащего по одному отсчету на элемент массива. |
void |
setSamples |
Задает отсчеты указанной полосы для указанного прямоугольника пикселей из массива float, содержащего по одному отсчету на элемент массива. |
void |
setSamples |
Задает отсчеты указанной полосы для указанного прямоугольника пикселей из массива int, содержащего по одному отсчету на элемент массива. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода для этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
MultiPixelPackedSampleModel
public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
MultiPixelPackedSampleModel с указанным типом данных, шириной, высотой и количеством бит на пиксель.- Параметры:
-
dataType— тип данных для хранения выборок -
w— ширина описанной области данных изображения в пикселях -
h— высота описанной области данных изображения в пикселях -
numberOfBits— количество бит на пиксель - Исключения:
-
IllegalArgumentException— еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT -
IllegalArgumentException— если значениеwилиhменьше или равно 0 -
RasterFormatException— если количество бит на пиксель не является степенью 2 или если число пикселей, равное степени 2, не помещается в один элемент данных.
MultiPixelPackedSampleModel
public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
MultiPixelPackedSampleModel с указанными типом данных, шириной, высотой, количеством бит на пиксель, шагом строки и смещением бита данных.- Параметры:
-
dataType— тип данных для хранения выборок -
w— ширина описанной области данных изображения в пикселях -
h— высота описанной области данных изображения в пикселях -
numberOfBits— количество бит на пиксель -
scanlineStride— шаг строки данных изображения -
dataBitOffset— смещение бита данных для описанной области данных изображения - Исключения:
-
IllegalArgumentException— еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT -
IllegalArgumentException— если значениеwилиhменьше или равно 0 -
IllegalArgumentException— если значениеscanlineStrideменьше или равно 0 -
RasterFormatException— если значение((numberOfBits * (long)w) + DataBuffer.getDataTypeSize(dataType) - 1) / DataBuffer.getDataTypeSize(dataType)большеscanlineStride -
RasterFormatException— если количество бит на пиксель не является степенью 2 или если число пикселей, равное степени 2, не помещается в один элемент данных. -
IllegalArgumentException— если значениеdataBitOffsetменьше нуля или не кратноnumberOfBits.
Подробное описание методов
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
MultiPixelPackedSampleModel с указанными шириной и высотой. Новая MultiPixelPackedSampleModel имеет тот же тип данных хранения и то же количество бит на пиксель, что и эта MultiPixelPackedSampleModel.- Переопределяет:
-
createCompatibleSampleModelв классеSampleModel - Параметры:
-
w— указанная ширина -
h— указанная высота - Возвращает:
SampleModelс указанными шириной и высотой, а также тем же типом данных хранения и количеством бит на пиксель, что и у этойMultiPixelPackedSampleModel.- Исключения:
-
IllegalArgumentException— еслиwилиhне больше 0
createDataBuffer
public DataBuffer createDataBuffer()
DataBuffer, соответствующий этой MultiPixelPackedSampleModel. Тип данных и размер объекта DataBuffer соответствуют этой MultiPixelPackedSampleModel. DataBuffer содержит один банк.- Переопределяет:
-
createDataBufferв классеSampleModel - Возвращает:
DataBufferс теми же типом данных и размером, что и у этойMultiPixelPackedSampleModel.
getNumDataElements
public int getNumDataElements()
getDataElements(int, int, Object, DataBuffer) и setDataElements(int, int, Object, DataBuffer). Для MultiPixelPackedSampleModel это значение равно одному.- Переопределяет:
-
getNumDataElementsв классеSampleModel - Возвращает:
- количество элементов данных.
- См. также:
getSampleSize
public int[] getSampleSize()
- Переопределяет:
-
getSampleSizeв классеSampleModel - Возвращает:
- количество бит на выборку.
getSampleSize
public int getSampleSize(int band)
Поскольку у MultiPixelPackedSampleModel только одна полоса, этот метод игнорирует параметр band и возвращает размер выборки единственной полосы.
- Переопределяет:
-
getSampleSizeв классеSampleModel - Параметры:
-
band— указанная полоса (игнорируется) - Возвращает:
- количество бит на выборку для указанной полосы.
getOffset
public int getOffset(int x, int y)
- Параметры:
-
x— координата X указанного пикселя -
y— координата Y указанного пикселя - Возвращает:
- смещение указанного пикселя.
getBitOffset
public int getBitOffset(int x)
x-й пиксель строки сканирования. Это смещение одинаково для всех строк сканирования.- Параметры:
-
x— указанный пиксель - Возвращает:
- смещение в битах указанного пикселя.
getScanlineStride
public int getScanlineStride()
- Возвращает:
- шаг строки сканирования этой
MultiPixelPackedSampleModel.
getPixelBitStride
public int getPixelBitStride()
- Возвращает:
pixelBitStrideэтойMultiPixelPackedSampleModel.
getDataBitOffset
public int getDataBitOffset()
- Возвращает:
dataBitOffsetэтойMultiPixelPackedSampleModel.
getTransferType
public int getTransferType()
getDataElements и setDataElements. Тип передачи может совпадать с типом данных хранения, а может и отличаться от него. Тип передачи — один из следующих: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT или DataBuffer.TYPE_INT.- Переопределяет:
-
getTransferTypeв классеSampleModel - Возвращает:
- тип передачи.
- См. также:
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel с подмножеством полос этой MultiPixelPackedSampleModel. Поскольку у MultiPixelPackedSampleModel только одна полоса, аргумент bands игнорируется.- Переопределяет:
-
createSubsetSampleModelв классеSampleModel - Параметры:
-
bands— указанные полосы (игнорируются) - Возвращает:
- новую
SampleModelс теми же полосами, что и у этойMultiPixelPackedSampleModel.
getSample
public int getSample(int x, int y, int b, DataBuffer data)
int выборку указанной полосы для пикселя с координатами (x, y). Если координаты выходят за допустимые границы, выбрасывается ArrayIndexOutOfBoundsException.- Переопределяет:
-
getSampleв классеSampleModel - Параметры:
-
x— координата X указанного пикселя -
y— координата Y указанного пикселя -
b— возвращаемая полоса; должно быть равно 0 -
data—DataBuffer, содержащий данные изображения - Возвращает:
- указанную полосу, содержащую выборку заданного пикселя.
- Исключения:
-
ArrayIndexOutOfBoundsException— если указанные координаты выходят за допустимые границы. - См. также:
setSample
public void setSample(int x, int y, int b, int s, DataBuffer data)
DataBuffer, используя для ввода int. Если координаты выходят за допустимые границы, выбрасывается ArrayIndexOutOfBoundsException.- Переопределяет:
-
setSampleв классеSampleModel - Параметры:
-
x— координата X указанного пикселя -
y— координата Y указанного пикселя -
b— задаваемая полоса; должно быть равно 0 -
s— входная выборка в видеint -
data—DataBuffer, в котором хранятся данные изображения - Исключения:
-
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы. - См. также:
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
MultiPixelPackedSampleModel массив содержит один элемент, а его тип — наименьший из DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT и DataBuffer.TYPE_INT, способный вместить один пиксель. Как правило, obj следует передавать как null, чтобы Object создавался автоматически и имел правильный примитивный тип данных. В следующем фрагменте кода показана передача данных одного пикселя из DataBuffer db1, структура хранения которого описана в MultiPixelPackedSampleModel mppsm1, в DataBuffer db2, структура хранения которого описана в MultiPixelPackedSampleModel mppsm2. Такая передача, как правило, эффективнее использования getPixel или setPixel.
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
Использование getDataElements или setDataElements для передачи данных между двумя парами DataBuffer/SampleModel допустимо, если SampleModels имеют одинаковое число полос, соответствующие полосы содержат одинаковое число бит на отсчёт, а типы TransferType совпадают. Если obj не является null, он должен быть примитивным массивом типа TransferType. В противном случае выбрасывается ClassCastException. ArrayIndexOutOfBoundsException выбрасывается, если координаты выходят за допустимые границы или если obj не является null и недостаточно велик для хранения данных пикселя.
- Указано в:
-
getDataElementsв классеSampleModel - Параметры:
-
x— координата X указанного пикселя -
y— координата Y указанного пикселя -
obj— примитивный массив для возврата данных пикселя илиnull. -
data—DataBuffer, содержащий данные изображения. - Возвращает:
Object, содержащий данные указанного пикселя.- Исключения:
-
ClassCastException— еслиobjне является примитивным массивом типа TransferType или не являетсяnull -
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или еслиobjне являетсяnullлибо недостаточно велик для хранения данных пикселя -
NullPointerException— еслиdataявляетсяnull. -
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или если {code obj} слишком мал для хранения выходных данных. - См. также:
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
int. ArrayIndexOutOfBoundsException выбрасывается, если координаты выходят за допустимые границы.- Переопределяет:
-
getPixelв классеSampleModel - Параметры:
-
x— координата X указанного пикселя -
y— координата Y указанного пикселя -
iArray— массив, содержащий возвращаемый пиксель, илиnull -
data—DataBuffer, в котором хранятся данные изображения - Возвращает:
- массив, содержащий указанный пиксель.
- Исключения:
-
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или еслиiArrayслишком мал для хранения выходных данных. -
NullPointerException— еслиdataявляетсяnull. -
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или еслиiArrayслишком мал для хранения выходных данных. - См. также:
setDataElements
public void setDataElements(int x, int y, Object obj, DataBuffer data)
DataBuffer из примитивного массива типа TransferType. Для MultiPixelPackedSampleModel только первый элемент массива содержит допустимые данные, а его тип должен быть наименьшим из DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT и DataBuffer.TYPE_INT, способным вместить один пиксель. В следующем фрагменте кода показана передача данных одного пикселя из DataBuffer db1, структура хранения которого описана в MultiPixelPackedSampleModel mppsm1, в DataBuffer db2, структура хранения которого описана в MultiPixelPackedSampleModel mppsm2. Такая передача, как правило, эффективнее использования getPixel или setPixel.
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
Использование getDataElements или setDataElements для передачи данных между двумя парами DataBuffer/SampleModel допустимо, если объекты SampleModel имеют одинаковое число полос, соответствующие полосы содержат одинаковое число бит на отсчёт, а типы TransferType совпадают. obj должен быть примитивным массивом типа TransferType. В противном случае выбрасывается ClassCastException. ArrayIndexOutOfBoundsException выбрасывается, если координаты выходят за допустимые границы или если obj недостаточно велик для хранения данных пикселя.
- Указано в:
-
setDataElementsв классеSampleModel - Параметры:
-
x— координата X пикселя -
y— координата Y пикселя -
obj— примитивный массив, содержащий данные пикселя -
data—DataBuffer, содержащий данные изображения - Исключения:
-
NullPointerException— еслиobjилиdataявляетсяnull. -
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или еслиobjслишком мал для хранения входных данных. - См. также:
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, содержащий данные изображения - Исключения:
-
NullPointerException— еслиiArrayилиdataявляетсяnull. -
ArrayIndexOutOfBoundsException— если координаты выходят за допустимые границы или еслиiArrayслишком мал для хранения входных данных. - См. также:
© 1993, 2025, 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.