Класс 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);
Краткое описание полей
Поля, объявленные в классе java.awt.image.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, java.lang.Object, java.awt.image.DataBuffer) и setDataElements(int, int, java.lang.Object, java.awt.image.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 в качестве входных данных. |
Методы, объявленные в классе java.awt.image.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- если количество бит на пиксель не является степенью двойки или если количество пикселей, являющееся степенью двойки, не помещается в один элемент данных. -
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- указанная высота - Возвращает:
- a
SampleModelс указанной шириной и высотой и с тем же типом данных хранилища и количеством бит на пиксель, что и этотMultiPixelPackedSampleModel. - Исключения:
-
IllegalArgumentException- еслиwилиhне больше 0
createDataBuffer
public DataBuffer createDataBuffer()
DataBuffer, который соответствует этому MultiPixelPackedSampleModel. Тип данных и размер объекта DataBuffer согласованы с этим MultiPixelPackedSampleModel. DataBuffer имеет один банк.- Указано в:
-
createDataBufferв классеSampleModel - Возвращает:
- a
DataBufferс тем же типом данных и размером, что и этотMultiPixelPackedSampleModel.
getNumDataElements
public int getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) и setDataElements(int, int, java.lang.Object, java.awt.image.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 может совпадать или не совпадать с типом данных хранилища. 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)
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html