Класс 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 одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на образец, а TransferTypes одинаковы. Если 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 одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на образец, а TransferTypes одинаковы. 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, 2021, 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/17/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html