Класс 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​(int dataType, int w, int h, int numberOfBits)

Создает MultiPixelPackedSampleModel с указанным типом данных, шириной, высотой и количеством бит на пиксель.

MultiPixelPackedSampleModel​(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)

Создает MultiPixelPackedSampleModel с указанным типом данных, шириной, высотой, количеством бит на пиксель, шагом строки и смещением бита данных.

Краткое описание методов

Модификатор и тип Метод Описание
SampleModel createCompatibleSampleModel​(int w, int h)

Создает новый MultiPixelPackedSampleModel с указанной шириной и высотой.

DataBuffer createDataBuffer()

Создаёт DataBuffer, соответствующий этому MultiPixelPackedSampleModel.

SampleModel createSubsetSampleModel​(int[] bands)

Создает новый MultiPixelPackedSampleModel с подмножеством каналов этого MultiPixelPackedSampleModel.

int getBitOffset​(int x)

Возвращает смещение в битах в элементе данных, в котором хранится x-й пиксель строки.

int getDataBitOffset()

Возвращает смещение бита данных в битах.

Object getDataElements​(int x, int y, Object obj, DataBuffer data)

Возвращает данные для одного пикселя в примитивном массиве типа 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​(int x, int y)

Возвращает смещение пикселя (x, y) в элементах массива данных.

int[] getPixel​(int x, int y, int[] iArray, DataBuffer data)

Возвращает указанный пиксель одного канала в первом элементе массива int.

int getPixelBitStride()

Возвращает шаг пикселя в битах.

int getSample​(int x, int y, int b, DataBuffer data)

Возвращает образец в указанном канале для пикселя, расположенного по координатам (x, y) в виде int.

int[] getSampleSize()

Возвращает количество бит на образец для всех каналов.

int getSampleSize​(int band)

Возвращает количество бит на образец для указанного канала.

int getScanlineStride()

Возвращает шаг строки.

int getTransferType()

Возвращает TransferType, используемый для передачи пикселей с помощью методов getDataElements и setDataElements.

void setDataElements​(int x, int y, Object obj, DataBuffer data)

Устанавливает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType.

void setPixel​(int x, int y, int[] iArray, DataBuffer data)

Устанавливает пиксель в DataBuffer, используя массив int для ввода.

void setSample​(int x, int y, int b, int s, DataBuffer data)

Устанавливает образец в указанном канале для пикселя, расположенного по координатам (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

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

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 - указанная высота
Возвращает:
объект SampleModel с указанной шириной и высотой и тем же типом данных хранения и количеством бит на пиксель, что и этот MultiPixelPackedSampleModel.
Исключения:
IllegalArgumentException - если w или h не больше 0

createDataBuffer

public DataBuffer createDataBuffer()

Создаёт буфер данных, соответствующий этому MultiPixelPackedSampleModel. Тип и размер данных объекта буфера DataBuffer согласованы с этим MultiPixelPackedSampleModel. Буфер DataBuffer имеет один банк.

Определено в:
createDataBuffer в классе SampleModel
Возвращает:
буфер данных 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
Возвращает:
количество элементов данных.
См. также:
SampleModel.getDataElements(int, int, Object, DataBuffer), SampleModel.getDataElements(int, int, int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, int, int, Object, DataBuffer), SampleModel.getTransferType()

getSampleSize

public int[] getSampleSize()

Возвращает количество бит на образец для всех полос.

Определено в:
getSampleSize в классе SampleModel
Возвращает:
количество бит на образец.

getSampleSize

public int getSampleSize(int band)

Возвращает количество бит на образец для указанной полосы.

Определено в:
getSampleSize в классе SampleModel
Параметры:
band - указанная полоса
Возвращает:
количество бит на образец для указанной полосы.

getOffset

public int getOffset(int x,
                     int y)

Возвращает смещение пикселя (x, y) в элементах массива данных.

Параметры:
x - координата X указанного пикселя
y - координата Y указанного пикселя
Возвращает:
смещение указанного пикселя.

getBitOffset

public int getBitOffset(int x)

Возвращает смещение в битах в элемент данных, в котором он хранится для x-го пикселя строки сканирования. Это смещение одинаково для всех строк сканирования.

Параметры:
x - указанный пиксель
Возвращает:
смещение в битах указанного пикселя.

getScanlineStride

public int getScanlineStride()

Возвращает шаг строки сканирования.

Возвращает:
шаг строки сканирования этого MultiPixelPackedSampleModel.

getPixelBitStride

public int getPixelBitStride()

Возвращает шаг пикселя в битах. Это значение равно количеству бит на пиксель.

Возвращает:
шаг пикселя в битах этого MultiPixelPackedSampleModel.

getDataBitOffset

public int getDataBitOffset()

Возвращает смещение данных в битах.

Возвращает:
смещение данных в битах этого MultiPixelPackedSampleModel.

getTransferType

public int getTransferType()

Возвращает TransferType, используемый для передачи пикселей с помощью методов getDataElements и setDataElements. TransferType может или не может совпадать с типом данных хранения. TransferType — это один из DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT или DataBuffer.TYPE_INT.

Переопределяет:
getTransferType в классе SampleModel
Возвращает:
тип передачи.
См. также:
SampleModel.getDataElements(int, int, Object, DataBuffer), SampleModel.getDataElements(int, int, int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, int, int, Object, DataBuffer), SampleModel.getNumDataElements(), DataBuffer

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)

Создаёт новый MultiPixelPackedSampleModel с подмножеством полос этого MultiPixelPackedSampleModel. Поскольку у MultiPixelPackedSampleModel только одна полоса, аргумент bands должен иметь длину 1 и указывать на нулевую полосу.

Определено в:
createSubsetSampleModel в классе SampleModel
Параметры:
bands - указанные полосы
Возвращает:
новый SampleModel с подмножеством полос этого MultiPixelPackedSampleModel.
Исключения:
RasterFormatException - если запрошенное количество полос не равно единице.
IllegalArgumentException - если w или h не больше 0

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)

Возвращает образец в указанной полосе для пикселя, расположенного в (x, y). Если координаты не находятся в границах, вызывается исключение.

Определено в:
getSample в классе SampleModel
Параметры:
x - координата X указанного пикселя
y - координата Y указанного пикселя
b - полоса для возврата, которая предполагается равной 0
data - DataBuffer, содержащий данные изображения
Возвращает:
указанную полосу, содержащую образец указанного пикселя.
Исключения:
ArrayIndexOutOfBoundsException - если указанные координаты не находятся в границах.
См. также:
setSample(int, int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)

Устанавливает образец в указанной полосе для пикселя, расположенного в (x, y), в DataBuffer с использованием int для ввода. Если координаты не находятся в границах, вызывается исключение.

Определено в:
setSample в классе SampleModel
Параметры:
x - координата X указанного пикселя
y - координата Y указанного пикселя
b - полоса для возврата, которая предполагается равной 0
s - входной образец в виде int
data - DataBuffer, где хранятся данные изображения
Исключения:
ArrayIndexOutOfBoundsException - если координаты не находятся в границах.
См. также:
getSample(int, int, int, DataBuffer)

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)

Возвращает данные для одного пикселя в примитивном массиве типа TransferType. Для 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. В противном случае вызывается исключение. Исключение вызывается, если координаты не находятся в границах, или если obj не null и не достаточно велик для хранения данных пикселя.

Указано в:
getDataElements в классе SampleModel
Параметры:
x - координата X указанного пикселя
y - координата Y указанного пикселя
obj - массив примитивных типов, в который нужно вернуть данные пикселя или null.
data - DataBuffer, содержащий данные изображения.
Возвращает:
массив Object, содержащий данные указанного пикселя.
Исключения:
ClassCastException - если obj не является массивом примитивных типов типа TransferType или не null
ArrayIndexOutOfBoundsException - если координаты находятся вне границ, или если obj не null или недостаточно велик для хранения данных пикселя
См. также:
setDataElements(int, int, Object, DataBuffer)

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 - если координаты находятся вне границ
См. также:
setPixel(int, int, int[], DataBuffer)

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, содержащий данные изображения
См. также:
getDataElements(int, int, Object, 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, содержащий данные изображения
См. также:
getPixel(int, int, int[], DataBuffer)

© 1993, 2020, 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/11/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html

Spec-Zone .ru
спецификации, руководства, описания, API