Spec-Zone.ru › OpenJDK 25

Класс BandedSampleModel

java.lang.Object
java.awt.image.SampleModel
java.awt.image.ComponentSampleModel
java.awt.image.BandedSampleModel
public final class BandedSampleModel extends ComponentSampleModel
Этот класс представляет данные изображения, хранящиеся в виде чередующихся полос, при этом каждый отсчёт пикселя занимает один элемент данных в DataBuffer. Класс является подклассом ComponentSampleModel, но обеспечивает более эффективную реализацию доступа к данным изображения с чередованием полос, чем ComponentSampleModel. Этот класс обычно следует использовать при работе с изображениями, в которых данные отсчётов для каждой полосы хранятся в отдельном банке DataBuffer. Предоставляются методы доступа, позволяющие напрямую манипулировать данными изображения. Шаг пикселя — это количество элементов массива данных между двумя отсчётами одной и той же полосы в одной строке сканирования. Для BandedSampleModel шаг пикселя равен единице. Шаг строки сканирования — это количество элементов массива данных между заданным отсчётом и соответствующим отсчётом в том же столбце следующей строки сканирования. Смещения полос обозначают количество элементов массива данных от первого элемента массива данных банка DataBuffer, содержащего каждую полосу, до первого отсчёта этой полосы. Полосы нумеруются от 0 до N-1. Индексы банков задают соответствие между банком буфера данных и полосой данных изображения. Этот класс поддерживает типы данных TYPE_BYTE, TYPE_USHORT, TYPE_SHORT, TYPE_INT, TYPE_FLOAT и TYPE_DOUBLE

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

Поля, объявленные в классе ComponentSampleModel

bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride

Поля, объявленные в классе SampleModel

dataType, height, width

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

Конструктор Описание
BandedSampleModel(int dataType, int w, int h, int numBands)
Создаёт BandedSampleModel с указанными параметрами.
BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
Создаёт BandedSampleModel с указанными параметрами.

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

Модификатор и тип Метод Описание
SampleModel createCompatibleSampleModel(int w, int h)
Создаёт новую модель BandedSampleModel с указанными шириной и высотой.
DataBuffer createDataBuffer()
Создаёт DataBuffer, соответствующий этой модели BandedSampleModel. Тип данных, количество банков и размер DataBuffer будут согласованы с этой моделью BandedSampleModel.
SampleModel createSubsetSampleModel(int[] bands)
Создаёт новую модель BandedSampleModel, содержащую подмножество полос этой модели BandedSampleModel.
Object getDataElements(int x, int y, Object obj, DataBuffer data)
Возвращает данные одного пикселя в примитивном массиве типа TransferType.
int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
Возвращает все отсчёты указанного пикселя в массиве int.
int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Возвращает все отсчёты указанного прямоугольника пикселей в массиве int, по одному отсчёту на элемент массива данных.
int getSample(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя, расположенного в точке (x,y), в виде значения int.
double getSampleDouble(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя, расположенного в точке (x,y), в виде значения double.
float getSampleFloat(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя, расположенного в точке (x,y), в виде значения float.
int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Возвращает отсчёты в указанной полосе для заданного прямоугольника пикселей в массиве int, по одному отсчёту на элемент массива данных.
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 setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Задаёт все отсчёты прямоугольника пикселей, используя массив int, содержащий по одному отсчёту на элемент массива.
void setSample(int x, int y, int b, double s, DataBuffer data)
Задаёт отсчёт в указанной полосе для пикселя, расположенного в точке (x,y) в DataBuffer, используя для ввода значение double.
void setSample(int x, int y, int b, float s, DataBuffer data)
Задаёт отсчёт в указанной полосе для пикселя, расположенного в точке (x,y) в DataBuffer, используя для ввода значение float.
void setSample(int x, int y, int b, int s, DataBuffer data)
Задаёт отсчёт в указанной полосе для пикселя, расположенного в точке (x,y) в DataBuffer, используя для ввода значение int.
void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Задаёт отсчёты в указанной полосе для заданного прямоугольника пикселей, используя массив int, содержащий по одному отсчёту на элемент массива данных.

Методы, объявленные в классе ComponentSampleModel

getBandOffsets, getBankIndices, getNumDataElements, getOffset, getOffset, getPixelStride, getSampleSize, getSampleSize, getScanlineStride

Методы, объявленные в классе SampleModel

getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples

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

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

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

BandedSampleModel

public BandedSampleModel(int dataType, int w, int h, int numBands)
Создаёт BandedSampleModel с указанными параметрами. Шаг пикселя будет равен одному элементу данных. Шаг строки сканирования будет равен ширине. Каждая полоса будет храниться в отдельном банке, а смещения всех полос будут равны нулю.
Параметры:
dataType — тип данных для хранения отсчётов.
w — ширина (в пикселях) описываемой области данных изображения.
h — высота (в пикселях) описываемой области данных изображения.
numBands — количество полос данных изображения.
Исключения:
IllegalArgumentException — если w и h не являются одновременно больше 0
IllegalArgumentException — если произведение w и h больше Integer.MAX_VALUE
IllegalArgumentException — если numBands не больше 0
IllegalArgumentException — если dataType не является одним из поддерживаемых типов данных для этой модели отсчётов.

BandedSampleModel

public BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
Создаёт BandedSampleModel с указанными параметрами. Количество полос будет определено по длинам массивов bankIndices и bandOffsets, которые должны быть равны. Шаг пикселя будет равен одному элементу данных.
Параметры:
dataType — тип данных для хранения отсчётов.
w — ширина (в пикселях) описываемой области данных изображения.
h — высота (в пикселях) описываемой области данных изображения.
scanlineStride — шаг строки данных изображения.
bankIndices — индекс банка для каждой полосы.
bandOffsets — смещение каждой полосы.
Исключения:
IllegalArgumentException — если w и h не являются одновременно больше 0
IllegalArgumentException — если произведение w и h больше Integer.MAX_VALUE
IllegalArgumentException — если scanlineStride меньше 0
NullPointerException — если bankIndices равно null
NullPointerException — если bandOffsets равно null
IllegalArgumentException — если bandOffsets.length равно 0
IllegalArgumentException — если длина bankIndices не равна длине bandOffsets
IllegalArgumentException — если любой из индексов банка в bandIndices меньше 0
IllegalArgumentException — если dataType не является одним из поддерживаемых типов данных для этой модели отсчётов

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

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w, int h)
Создаёт новую BandedSampleModel с указанными шириной и высотой. Новая BandedSampleModel будет иметь такое же количество полос, тип данных для хранения и индексы банков, что и эта BandedSampleModel. Смещения полос будут уплотнены так, чтобы смещение между полосами равнялось w*pixelStride, а минимальное из всех смещений полос было равно нулю.
Переопределяет:
createCompatibleSampleModel в классе ComponentSampleModel
Параметры:
w — ширина результирующей BandedSampleModel
h — высота результирующей BandedSampleModel
Возвращает:
новую BandedSampleModel с указанными шириной и высотой.
Исключения:
IllegalArgumentException — если w или h равно Integer.MAX_VALUE или Integer.MIN_VALUE
IllegalArgumentException — если dataType не является одним из поддерживаемых типов данных

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
Создаёт новую BandedSampleModel с подмножеством полос этой BandedSampleModel. Новую BandedSampleModel можно использовать с любым DataBuffer, с которым можно использовать существующую BandedSampleModel. Новая комбинация BandedSampleModel/DataBuffer будет представлять изображение с подмножеством полос исходной комбинации BandedSampleModel/DataBuffer.
Переопределяет:
createSubsetSampleModel в классе ComponentSampleModel
Параметры:
bands — подмножество полос этой ComponentSampleModel
Возвращает:
ComponentSampleModel, созданную с подмножеством полос этой ComponentSampleModel.
Исключения:
RasterFormatException — если количество полос больше количества банков в этой модели отсчётов.
IllegalArgumentException — если dataType не является одним из поддерживаемых типов данных

createDataBuffer

public DataBuffer createDataBuffer()
Создаёт DataBuffer, соответствующий этой BandedSampleModel. Тип данных, количество банков и размер DataBuffer будут соответствовать этой BandedSampleModel.
Переопределяет:
createDataBuffer в классе ComponentSampleModel
Возвращает:
DataBuffer, тип данных, количество банков и размер которого соответствуют этой ComponentSampleModel.
Исключения:
IllegalArgumentException — если dataType не является одним из поддерживаемых типов.

getDataElements

public Object getDataElements(int x, int y, Object obj, DataBuffer data)
Возвращает данные одного пикселя в примитивном массиве типа TransferType. Для BandedSampleModel он будет совпадать с типом данных, а отсчёты будут возвращены по одному на элемент массива. Как правило, obj следует передавать равным null, чтобы объект создавался автоматически и имел подходящий примитивный тип данных.

Следующий код показывает передачу данных одного пикселя из DataBuffer db1, расположение данных в котором описывается BandedSampleModel bsm1, в DataBuffer db2, расположение данных в котором описывается BandedSampleModel bsm2. Как правило, такая передача выполняется эффективнее, чем с помощью getPixel/setPixel.

      BandedSampleModel bsm1, bsm2;
      DataBufferInt db1, db2;
      bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                           db2);
Использование getDataElements/setDataElements для передачи данных между парами DataBuffer/SampleModel допустимо, если SampleModel имеют одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на отсчёт, а TransferType совпадают.

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

Переопределяет:
getDataElements в классе ComponentSampleModel
Параметры:
x — координата X пикселя
y — координата Y пикселя
obj — если не равен null, примитивный массив, в который будут помещены данные пикселя.
data — DataBuffer, содержащий данные изображения.
Возвращает:
данные указанного пикселя.
См. также:
  • setDataElements(int, int, Object, DataBuffer)

getPixel

public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
Возвращает все отсчёты указанного пикселя в массиве int. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getPixel в классе ComponentSampleModel
Параметры:
x — координата X пикселя
y — координата Y пикселя
iArray — если не равен null, возвращает отсчёты в этом массиве
data — DataBuffer, содержащий данные изображения
Возвращает:
отсчёты указанного пикселя.
См. также:
  • setPixel(int, int, int[], DataBuffer)

getPixels

public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Возвращает все отсчёты указанного прямоугольника пикселей в массиве int — по одному отсчёту на элемент массива данных. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getPixels в классе ComponentSampleModel
Параметры:
x — координата X верхнего левого пикселя
y — координата Y верхнего левого пикселя
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
iArray — если не равен null, возвращает отсчёты в этом массиве
data — DataBuffer, содержащий данные изображения
Возвращает:
отсчёты пикселей в указанной области.
См. также:
  • setPixels(int, int, int, int, int[], DataBuffer)

getSample

public int getSample(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя с координатами (x,y) в виде значения int. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getSample в классе ComponentSampleModel
Параметры:
x — координата X пикселя
y — координата Y пикселя
b — возвращаемая полоса
data — DataBuffer, содержащий данные изображения
Возвращает:
отсчёт в указанной полосе указанного пикселя.
См. также:
  • setSample(int, int, int, int, DataBuffer)

getSampleFloat

public float getSampleFloat(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя с координатами (x,y) в виде значения float. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getSampleFloat в классе ComponentSampleModel
Параметры:
x — координата X пикселя
y — координата Y пикселя
b — возвращаемая полоса
data — DataBuffer, содержащий данные изображения
Возвращает:
значение float, представляющее отсчёт в указанной полосе указанного пикселя.

getSampleDouble

public double getSampleDouble(int x, int y, int b, DataBuffer data)
Возвращает отсчёт в указанной полосе для пикселя с координатами (x,y) в виде значения double. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getSampleDouble в классе ComponentSampleModel
Параметры:
x — координата X пикселя
y — координата Y пикселя
b — возвращаемая полоса
data — DataBuffer, содержащий данные изображения
Возвращает:
значение double, представляющее отсчёт в указанной полосе указанного пикселя.

getSamples

public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Возвращает отсчёты в указанной полосе для заданного прямоугольника пикселей в массиве int — по одному отсчёту на элемент массива данных. ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за границы.
Переопределяет:
getSamples в классе ComponentSampleModel
Параметры:
x — координата X верхнего левого пикселя
y — координата Y верхнего левого пикселя
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
b — возвращаемая полоса
iArray — если не равен null, возвращает отсчёты в этом массиве
data — DataBuffer, содержащий данные изображения
Возвращает:
отсчёты в указанной полосе для пикселей в заданной области.
См. также:
  • setSamples(int, int, int, int, int, int[], DataBuffer)

setDataElements

public void setDataElements(int x, int y, Object obj, DataBuffer data)
Задает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType. Для BandedSampleModel тип данных будет таким же, а выборки передаются по одной на каждый элемент массива.

Следующий код иллюстрирует передачу данных для одного пикселя из DataBuffer db1, схема хранения которого описана BandedSampleModel bsm1, в DataBuffer db2, схема хранения которого описана BandedSampleModel bsm2. Обычно такая передача эффективнее, чем использование getPixel/setPixel.

      BandedSampleModel bsm1, bsm2;
      DataBufferInt db1, db2;
      bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                           db2);
Использование getDataElements/setDataElements для передачи данных между парами DataBuffer/SampleModel допустимо, если SampleModel имеют одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на выборку, а TransferType совпадают.

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

Переопределяет:
setDataElements в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
obj - Если не равно null, возвращает примитивный массив в этом объекте
data - DataBuffer, содержащий данные изображения
См. также:
  • getDataElements(int, int, Object, DataBuffer)

setPixel

public void setPixel(int x, int y, int[] iArray, DataBuffer data)
Задает пиксель в DataBuffer, используя в качестве входных данных массив int с выборками. Исключение ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за допустимые границы.
Переопределяет:
setPixel в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
iArray - Входные выборки в массиве int
data - DataBuffer, содержащий данные изображения
См. также:
  • getPixel(int, int, int[], DataBuffer)

setPixels

public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Задает все выборки для прямоугольника пикселей из массива int, содержащего по одной выборке на каждый элемент массива. Исключение ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за допустимые границы.
Переопределяет:
setPixels в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя в верхнем левом углу
y - Координата Y местоположения пикселя в верхнем левом углу
w - Ширина прямоугольника пикселей
h - Высота прямоугольника пикселей
iArray - Входные выборки в массиве int
data - DataBuffer, содержащий данные изображения
См. также:
  • getPixels(int, 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 в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
b - Полоса, для которой задается значение
s - Входная выборка типа int
data - DataBuffer, содержащий данные изображения
См. также:
  • getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x, int y, int b, float s, DataBuffer data)
Задает выборку в указанной полосе для пикселя, расположенного в точке (x,y) в DataBuffer, используя в качестве входных данных значение float. Исключение ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за допустимые границы.
Переопределяет:
setSample в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
b - Полоса, для которой задается значение
s - Входная выборка типа float
data - DataBuffer, содержащий данные изображения
См. также:
  • getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x, int y, int b, double s, DataBuffer data)
Задает выборку в указанной полосе для пикселя, расположенного в точке (x,y) в DataBuffer, используя в качестве входных данных значение double. Исключение ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за допустимые границы.
Переопределяет:
setSample в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
b - Полоса, для которой задается значение
s - Входная выборка типа double
data - DataBuffer, содержащий данные изображения
См. также:
  • getSample(int, int, int, DataBuffer)

setSamples

public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Задает выборки в указанной полосе для указанного прямоугольника пикселей из массива int, содержащего по одной выборке на каждый элемент массива данных. Исключение ArrayIndexOutOfBoundsException может быть выброшено, если координаты выходят за допустимые границы.
Переопределяет:
setSamples в классе ComponentSampleModel
Параметры:
x - Координата X местоположения пикселя в верхнем левом углу
y - Координата Y местоположения пикселя в верхнем левом углу
w - Ширина прямоугольника пикселей
h - Высота прямоугольника пикселей
b - Полоса, для которой задается значение
iArray - Входной массив выборок
data - DataBuffer, содержащий данные изображения
См. также:
  • getSamples(int, int, int, 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/BandedSampleModel.html

Spec-Zone.ru

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