Spec-Zone.ru › OpenJDK 17

Класс MultiPixelPackedSampleModel

java.lang.Object
java.awt.image.SampleModel
java.awt.image.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 - указанная высота
Возвращает:
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
Возвращает:
количество элементов данных.
См. также:
  • 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()
Возвращает шаг пикселя в битах. Это значение совпадает с количеством бит на пиксель.
Возвращает:
pixelBitStride этого MultiPixelPackedSampleModel.

getDataBitOffset

public int getDataBitOffset()
Возвращает смещение бита данных в битах.
Возвращает:
dataBitOffset этого MultiPixelPackedSampleModel.

getTransferType

public int getTransferType()
Возвращает TransferType, используемый для передачи пикселей с помощью методов getDataElements и setDataElements. TransferType может совпадать или не совпадать с типом данных хранилища. TransferType является одним из DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT или DataBuffer.TYPE_INT.
Переопределяет:
getTransferType в классе SampleModel
Возвращает:
transfertype.
См. также:
  • 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 должен иметь длину один и указывать на нулевую полосу.
Указано в:
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(int, int, int, int, DataBuffer)

setSample

public void setSample(int x, int y, int b, int s, DataBuffer data)
Устанавливает образец в указанной полосе для пикселя, расположенного в (x, y) в DataBuffer с использованием int для ввода. ArrayIndexOutOfBoundsException выбрасывается, если координаты не находятся в пределах границ.
Specified by:
setSample в классе SampleModel
Parameters:
x - координата X указанного пикселя
y - координата Y указанного пикселя
b - полоса для возврата, которая предполагается равной 0
s - входной образец в виде int
data - DataBuffer, где хранятся данные изображения
Throws:
ArrayIndexOutOfBoundsException - если координаты не находятся в пределах границ.
See Also:
  • 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. В противном случае выбрасывается 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:
  • setDataElements(int, int, Object, DataBuffer)

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:
  • 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 одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на образец, а TransferTypes одинаковы.

obj должен быть примитивным массивом типа TransferType. В противном случае выбрасывается ClassCastException. ArrayIndexOutOfBoundsException выбрасывается, если координаты не находятся в пределах границ, или если obj не достаточно велик для хранения данных пикселя.

Specified by:
setDataElements в классе SampleModel
Parameters:
x - координата X местоположения пикселя
y - координата Y местоположения пикселя
obj - примитивный массив, содержащий данные пикселя
data - DataBuffer, содержащий данные изображения
See Also:
  • getDataElements(int, int, Object, DataBuffer)

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:
  • getPixel(int, int, int[], DataBuffer)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API