Spec-Zone.ru › OpenJDK 24

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

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

Поля, объявленные в классе java.awt.image.ComponentSampleModel

bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride

Поля, объявленные в классе java.awt.image.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[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Возвращает все образцы для указанного прямоугольника пикселей в массиве целых чисел, по одному образцу на элемент массива.
int getSample(int x, int y, int b, DataBuffer data)
Возвращает образец в указанной полосе для пикселя, расположенного по координатам (x,y), как целое число.
double getSampleDouble(int x, int y, int b, DataBuffer data)
Возвращает образец в указанной полосе для пикселя, расположенного по координатам (x,y), как двойное число.
float getSampleFloat(int x, int y, int b, DataBuffer data)
Возвращает образец в указанной полосе для пикселя, расположенного по координатам (x,y), как число с плавающей точкой.
int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Возвращает образцы в указанной полосе для указанного прямоугольника пикселей в массиве целых чисел, по одному образцу на элемент массива.
void setDataElements(int x, int y, Object obj, DataBuffer data)
Устанавливает данные для одного пикселя в указанном DataBuffer из примитивного массива типа TransferType.
void setPixel(int x, int y, int[] iArray, DataBuffer data)
Устанавливает пиксель в DataBuffer, используя массив целых чисел для входных образцов.
void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Устанавливает все образцы для прямоугольника пикселей из массива целых чисел, содержащего по одному образцу на элемент массива.
void setSample(int x, int y, int b, double s, DataBuffer data)
Устанавливает образец в указанной полосе для пикселя, расположенного по координатам (x,y) в DataBuffer, используя двойное число для входных данных.
void setSample(int x, int y, int b, float s, DataBuffer data)
Устанавливает образец в указанной полосе для пикселя, расположенного по координатам (x,y) в DataBuffer, используя число с плавающей точкой.
void setSample(int x, int y, int b, int s, DataBuffer data)
Устанавливает образец в указанной полосе для пикселя, расположенного по координатам (x,y) в DataBuffer, используя целое число.
void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Устанавливает образцы в указанной полосе для указанного прямоугольника пикселей из массива целых чисел, содержащего по одному образцу на элемент массива.

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

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

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

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

Методы, объявленные в классе java.lang.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 с указанными параметрами. Количество каналов будет определяться по длинам массивов bandOffsets и bankIndices, которые должны быть равны. Шаг пикселя будет равен одному элементу данных.
Параметры:
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), как целое число. Может быть выброшено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
Overrides:
getSample in class ComponentSampleModel
Parameters:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
b - Полоса для возврата
data - DataBuffer, содержащий данные изображения
Returns:
образец в указанной полосе для указанного пикселя.
See Also:
  • setSample(int, int, int, int, DataBuffer)

getSampleFloat

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

getSampleDouble

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

getSamples

public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
Возвращает образцы в указанной полосе для заданного прямоугольника пикселей в массиве целых чисел, по одному образцу на элемент массива данных. Может быть выброшено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
Overrides:
getSamples in class ComponentSampleModel
Parameters:
x - Координата X верхнего левого пикселя
y - Координата Y верхнего левого пикселя
w - Ширина прямоугольника пикселей
h - Высота прямоугольника пикселей
b - Полоса для возврата
iArray - Если не null, возвращает образцы в этом массиве
data - DataBuffer, содержащий данные изображения
Returns:
образцы в указанной полосе для пикселей в указанной области.
See Also:
  • 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 недостаточно велик для хранения данных пикселя.

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

setPixel

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

setPixels

public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
Устанавливает все образцы для прямоугольника пикселей из массива целых чисел, содержащего по одному образцу на элемент массива. ArrayIndexOutOfBoundsException может быть выброшен, если координаты не находятся в пределах границ.
Overrides:
setPixels in class ComponentSampleModel
Parameters:
x - Координата X верхнего левого пикселя
y - Координата Y верхнего левого пикселя
w - Ширина прямоугольника пикселей
h - Высота прямоугольника пикселей
iArray - Входные образцы в массиве целых чисел
data - DataBuffer, содержащий данные изображения
See Also:
  • getPixels(int, int, int, int, int[], DataBuffer)

setSample

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

setSample

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

setSample

public void setSample(int x, int y, int b, double s, DataBuffer data)
Устанавливает образец в указанной полосе для пикселя, расположенного по координатам (x,y) в DataBuffer, используя число с двойной точностью для входных данных. ArrayIndexOutOfBoundsException может быть выброшен, если координаты не находятся в пределах границ.
Overrides:
setSample in class ComponentSampleModel
Parameters:
x - Координата X местоположения пикселя
y - Координата Y местоположения пикселя
b - Полоса для установки
s - Входной образец как число с двойной точностью
data - DataBuffer, содержащий данные изображения
See Also:
  • 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, если координаты выходят за пределы границ.
Overrides:
setSamples в классе ComponentSampleModel
Parameters:
x - Координата X верхнего левого пикселя
y - Координата Y верхнего левого пикселя
w - Ширина прямоугольника пикселей
h - Высота прямоугольника пикселей
b - Полоса для установки
iArray - Входной массив выборок
data - DataBuffer, содержащий данные изображения
See Also:
  • getSamples(int, int, int, int, int, int[], DataBuffer)

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/image/BandedSampleModel.html

Spec-Zone.ru

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