Класс 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 |
Возвращает образец в указанном канале для пикселя, расположенного в (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 в качестве входных данных. |
Методы, объявленные в классе 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 - Возвращает:
- transfertype.
- См. также:
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 образец в указанном канале для пикселя, расположенного в точке (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, если координаты выходят за пределы границ.- Specified by:
-
setSampleв классеSampleModel - Parameters:
-
x- координата X указанного пикселя -
y- координата Y указанного пикселя -
b- номер канала для возврата, предполагается, что он равен 0 -
s- входной образец в качествеint -
data-DataBuffer, где хранятся данные изображения - Throws:
-
ArrayIndexOutOfBoundsException- если координаты выходят за пределы границ. - See Also:
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 и недостаточно велик для хранения данных пикселя.
- Specified by:
-
getDataElementsв классеSampleModel - Parameters:
-
x- координата X указанного пикселя -
y- координата Y указанного пикселя -
obj- примитивный массив, в который нужно вернуть данные пикселя, илиnull. -
data-DataBuffer, содержащий данные изображения. - Returns:
- массив
Objectсодержащий данные для указанного пикселя. - Throws:
-
ClassCastException- еслиobjне является примитивным массивом типа TransferType или неnull -
ArrayIndexOutOfBoundsException- если координаты выходят за пределы границ или еслиobjнеnullили не достаточно велик для хранения данных пикселя. - See Also:
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
int. Бросается исключение ArrayIndexOutOfBoundsException, если координаты выходят за пределы границ.- Overrides:
-
getPixelв классеSampleModel - Parameters:
-
x- координата X указанного пикселя -
y- координата Y указанного пикселя -
iArray- массив, содержащий возвращаемый пиксель илиnull -
data-DataBuffer, содержащий данные изображения - Returns:
- массив, содержащий указанный пиксель.
- Throws:
-
ArrayIndexOutOfBoundsException- если координаты выходят за пределы границ - See Also:
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 недостаточно велик для хранения данных пикселя.
- Specified by:
-
setDataElementsв классеSampleModel - Parameters:
-
x- координата X позиции пикселя -
y- координата Y позиции пикселя -
obj- примитивный массив, содержащий данные пикселя -
data-DataBuffer, содержащий данные изображения - See Also:
setPixel
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
DataBuffer с использованием массива int в качестве входных данных. Бросается исключение ArrayIndexOutOfBoundsException, если координаты выходят за пределы границ.- Overrides:
-
setPixelв классеSampleModel - Parameters:
-
x- координата X позиции пикселя -
y- координата Y позиции пикселя -
iArray- входной пиксель в массивеint -
data-DataBuffer, содержащий данные изображения - See Also:
© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html