Класс 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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 |
Возвращает отсчёт указанного канала пикселя, расположенного в точке (x, y), как int. |
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
Подробное описание конструкторов
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
MultiPixelPackedSampleModel
public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
MultiPixelPackedSampleModel с указанными типом данных, шириной, высотой, количеством бит на пиксель, шагом строк и смещением бита данных.- Параметры:
-
dataType— тип данных для хранения отсчетов -
w— ширина описываемой области данных изображения в пикселях -
h— высота описываемой области данных изображения в пикселях -
numberOfBits— количество бит на пиксель -
scanlineStride— шаг строк данных изображения -
dataBitOffset— смещение бита данных для описываемой области данных изображения - Исключения:
-
RasterFormatException— если количество бит на пиксель не является степенью 2 или если степень 2, обозначающая количество пикселей, не помещается в один элемент данных. -
IllegalArgumentException— еслиwилиhне больше 0 -
IllegalArgumentException— еслиdataTypeне равно ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT
Подробное описание методов
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)
- Определено в:
-
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. TransferType может совпадать или не совпадать с типом данных хранения (DataType). TransferType — это одно из значений 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. - Исключения:
-
RasterFormatException— если запрошено не одно количество полос. -
IllegalArgumentException— еслиwилиhне больше 0
getSample
public int getSample(int x, int y, int b, DataBuffer data)
int. Если координаты выходят за допустимые границы, выбрасывается 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либо недостаточно велик, чтобы вместить данные пикселя - См. также:
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- если координаты выходят за допустимые границы - См. также:
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, содержащий данные изображения - См. также:
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, содержащий данные изображения - См. также:
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html