Класс 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. |
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), как целое число. |
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, по одному образцу на элемент массива данных. |
int |
hashCode() Возвращает значение хэш-кода для объекта. |
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, содержащего по одному образцу на элемент массива данных. |
Методы, унаследованные от класса java.awt.image.ComponentSampleModel
equals, 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, finalize, getClass, notify, notifyAll, toString, wait, wait, wait Конструкторы
BandedSampleModel
public BandedSampleModel(int dataType,
int w,
int h,
int numBands) Создаёт BandedSampleModel с указанными параметрами. Шаг по пикселям будет равен одному элементу данных. Шаг по строке сканирования будет таким же, как ширина. Каждый канал будет храниться в отдельном банке, а все смещения каналов будут равны нулю.
- Параметры:
-
dataType- Тип данных для хранения образцов. -
w- Ширина (в пикселях) области данных изображения. -
h- Высота (в пикселях) области данных изображения. -
numBands- Количество каналов для данных изображения. - Исключения:
-
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- если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 - Возвращает:
- BandedSampleModel, созданный с подмножеством каналов из этого
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 может быть брошен, если координаты не находятся в пределах.
- Overrides:
-
getSamplesв классе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 допустимо, если SampleModels имеют одинаковое количество полос, соответствующие полосы имеют одинаковое количество битов на выборку, и TransferType одинаковы. obj должен быть примитивным массивом типа TransferType. В противном случае выбрасывается ClassCastException. Может быть выброшено ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ, или если obj недостаточно велик для хранения данных пикселя.
- Overrides:
-
setDataElementsв классе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в классе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в классе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в классе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в классе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в классе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) Устанавливает выборки в указанной полосе для указанного прямоугольника пикселей из целочисленного массива, содержащего по одной выборке на элемент массива. Может быть выброшено исключение 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)
hashCode
public int hashCode()
Описание скопировано из класса: Object
Возвращает значение хэш-кода для объекта. Этот метод поддерживается для удобства хэш-таблиц, таких как предоставляемые HashMap.
Общее соглашение для метода hashCode:
- Всякий раз, когда он вызывается на одном объекте более одного раза во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать одно и то же целое число, при условии, что информация, используемая в сравненияхequalsс объектом, не изменяется. Это целое число не обязательно должно оставаться неизменным от одного выполнения приложения к другому выполнению того же приложения. - Если два объекта равны в соответствии с методом
equals(Object), то вызов методаhashCodeдля каждого из двух объектов должен давать один и тот же целочисленный результат. - Не требуется, чтобы если два объекта не равны в соответствии с методом
Object.equals(java.lang.Object), то вызов методаhashCodeдля каждого из двух объектов должен давать различные целочисленные результаты. Однако программист должен понимать, что получение различных целочисленных результатов для неравных объектов может улучшить производительность хэш-таблиц.
Насколько это разумно практически, метод hashCode, определенный классом Object, возвращает различные целые числа для различных объектов. (Это обычно реализуется путем преобразования внутреннего адреса объекта в целое число, но эта методика реализации не требуется языком программирования Java™).
- Overrides:
-
hashCodeв классеComponentSampleModel - Returns:
- значение хэш-кода для этого объекта.
- See Also:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
© 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.