Класс 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), как 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, содержащего по одному образцу на элемент массива. |
Методы, объявленные в классе 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- если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, а минимальное из всех смещений полос — ноль.
- Overrides:
-
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.
- Overrides:
-
createSubsetSampleModelв классеComponentSampleModel - Параметры:
-
bands— подмножество полос из этойComponentSampleModel - Возвращает:
ComponentSampleModel, созданную с подмножеством полос из этойComponentSampleModel.- Исключения:
-
RasterFormatException— если количество полос больше количества банков в этой модели образцов. -
IllegalArgumentException— еслиdataTypeне является одним из поддерживаемых типов данных
createDataBuffer
public DataBuffer createDataBuffer()
Создает DataBuffer, соответствующий этой BandedSampleModel. Тип данных, количество банков и размер DataBuffer будут соответствовать этой BandedSampleModel.
- Overrides:
-
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 допустимо, если у SampleModels одинаковое количество полос, соответствующие полосы имеют одинаковое количество бит на образец, и TransferTypes одинаковы. Если obj не равен null, это должен быть примитивный массив типа TransferType. В противном случае будет брошено исключение ClassCastException. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ или если obj не равен null и не достаточно велик для хранения данных пикселя.
- Overrides:
-
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, если координаты не находятся в пределах границ.
- Overrides:
-
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, если координаты не находятся в пределах границ.
- Overrides:
-
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в классе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), как число с плавающей точкой. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Overrides:
-
getSampleFloatв классеComponentSampleModel - Параметры:
-
x— Координата X местоположения пикселя -
y— Координата Y местоположения пикселя -
b— Полоса для возврата -
data— DataBuffer, содержащий данные изображения - Возвращает:
- значение с плавающей точкой, представляющее образец в указанной полосе для указанного пикселя.
getSampleDouble
public double getSampleDouble(int x,
int y,
int b,
DataBuffer data) Возвращает образец в указанной полосе для пикселя, расположенного по координатам (x,y), как число с двойной точностью. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Overrides:
-
getSampleDoubleв классеComponentSampleModel - Параметры:
-
x— Координата X местоположения пикселя -
y— Координата Y местоположения пикселя -
b— Полоса для возврата -
data— DataBuffer, содержащий данные изображения - Возвращает:
- значение с двойной точностью, представляющее образец в указанной полосе для указанного пикселя.
getSamples
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) Возвращает образцы в указанной полосе для указанного прямоугольника пикселей в массиве int, по одному образцу на элемент массива данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты не находятся в пределах границ.
- Overrides:
-
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 недостаточно велик для хранения данных пикселя.
- 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, используя массив целых чисел int для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Overrides:
-
setPixelв классеComponentSampleModel - Parameters:
-
x- Координата X местоположения пикселя -
y- Координата Y местоположения пикселя -
iArray- Входные образцы в массиве int -
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) Устанавливает все образцы для прямоугольника пикселей из массива целых чисел int, содержащего по одному образцу на каждый элемент массива. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Overrides:
-
setPixelsв классеComponentSampleModel - Parameters:
-
x- Координата X верхнего левого местоположения пикселя -
y- Координата Y верхнего левого местоположения пикселя -
w- Ширина прямоугольника пикселей -
h- Высота прямоугольника пикселей -
iArray- Входные образцы в массиве int -
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, используя целое число int для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Overrides:
-
setSampleв классеComponentSampleModel - Parameters:
-
x- Координата X местоположения пикселя -
y- Координата Y местоположения пикселя -
b- Полоса для установки -
s- Входной образец как целое число int -
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, используя float для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Overrides:
-
setSampleв классеComponentSampleModel - Parameters:
-
x- Координата X местоположения пикселя -
y- Координата Y местоположения пикселя -
b- Полоса для установки -
s- Входной образец как float -
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, используя double для входных данных. Может быть брошено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Overrides:
-
setSampleв классеComponentSampleModel - Parameters:
-
x- Координата X местоположения пикселя -
y- Координата Y местоположения пикселя -
b- Полоса для установки -
s- Входной образец как double -
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, 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/BandedSampleModel.html