Spec-Zone.ru › OpenJDK 25

Класс 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);

Краткое описание полей

Поля, объявленные в классе 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, Object, DataBuffer) и setDataElements(int, int, Object, 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.

Методы, объявленные в классе 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

Методы, объявленные в классе 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 — если количество бит на пиксель не является степенью 2 или если степень 2, обозначающая количество пикселей, не помещается в один элемент данных.
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()
Создает DataBuffer, соответствующий этой MultiPixelPackedSampleModel. Тип данных и размер объекта DataBuffer соответствуют этой MultiPixelPackedSampleModel. DataBuffer имеет один банк.
Определено в:
createDataBuffer в классе SampleModel
Возвращает:
DataBuffer с теми же типом данных и размером, что и у этой MultiPixelPackedSampleModel.

getNumDataElements

public int getNumDataElements()
Возвращает количество элементов данных, необходимых для передачи одного пикселя методами getDataElements(int, int, Object, DataBuffer) и setDataElements(int, int, Object, 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 может совпадать или не совпадать с типом данных хранения (DataType). 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 должен иметь длину, равную единице, и указывать на нулевую полосу.
Определено в:
createSubsetSampleModel в классе SampleModel
Параметры:
bands — указанные полосы
Возвращает:
новую SampleModel с подмножеством полос этой MultiPixelPackedSampleModel.
Исключения:
RasterFormatException — если запрошено не одно количество полос.
IllegalArgumentException — если w или h не больше 0

getSample

public int getSample(int x, int y, int b, DataBuffer data)
Возвращает отсчет указанной полосы для пикселя, расположенного в точке (x, y), в виде int. Если координаты выходят за допустимые границы, выбрасывается 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.
Определено в:
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 имеют одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на отсчёт, а значения 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 либо недостаточно велик, чтобы вместить данные пикселя
См. также:
  • 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)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая обзоры концепций, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/image/MultiPixelPackedSampleModel.html

Spec-Zone.ru

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