Класс SinglePixelPackedSampleModel
- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.SinglePixelPackedSampleModel
public class SinglePixelPackedSampleModel extends SampleModel
Этот класс представляет данные пикселей, упакованные таким образом, что N выборок, составляющих один пиксель, хранятся в одном элементе массива данных, и каждый элемент массива данных содержит выборки только для одного пикселя. Этот класс поддерживает типы данных TYPE_BYTE, TYPE_USHORT, TYPE_INT. Все элементы массива данных находятся в первом банке DataBuffer. Предоставляются методы-обработчики, позволяющие напрямую манипулировать данными изображения. Шаг сканирования — это количество элементов массива данных между заданной выборкой и соответствующей выборкой в том же столбце следующей строки сканирования. Маски битов — это маски, необходимые для извлечения выборок, представляющих полосы пикселя. Сдвиги битов — это сдвиги в битах в элементе массива данных выборок, представляющих полосы пикселя.
Следующий код иллюстрирует извлечение битов выборки, представляющей полосу b для пикселя x,y из DataBuffer data.
int sample = data.getElem(y * scanlineStride + x);
sample = (sample & bitMasks[b]) >>> bitOffsets[b];
Краткое описание полей
Поля, унаследованные от класса java.awt.image.SampleModel
dataType, height, numBands, width Краткое описание конструкторов
| Конструктор и описание |
|---|
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks) Создает SinglePixelPackedSampleModel с полосами bitMasks.length. |
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks) Создает SinglePixelPackedSampleModel с полосами bitMasks.length и шагом строки сканирования, равным scanlineStride элементам массива данных. |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
SampleModel |
createCompatibleSampleModel(int w,
int h) Создает новый SinglePixelPackedSampleModel с указанной шириной и высотой. |
DataBuffer |
createDataBuffer() Создает DataBuffer, соответствующий этому SinglePixelPackedSampleModel. |
SampleModel |
createSubsetSampleModel(int[] bands) Создает новый SinglePixelPackedSampleModel с подмножеством полос этого SinglePixelPackedSampleModel. |
boolean |
equals(Object o) Указывает, является ли какой-либо другой объект "равным" этому. |
int[] |
getBitMasks() Возвращает маски битов для всех полос. |
int[] |
getBitOffsets() Возвращает сдвиги битов в элементе массива данных, представляющие пиксель для всех полос. |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data) Возвращает данные для одного пикселя в примитивном массиве типа TransferType. |
int |
getNumDataElements() Возвращает количество элементов данных, необходимых для передачи одного пикселя с помощью методов getDataElements и setDataElements. |
int |
getOffset(int x,
int y) Возвращает смещение (в элементах массива данных) пикселя (x,y). |
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) Возвращает в виде int выборку в указанной полосе для пикселя, расположенного по координатам (x,y). |
int[] |
getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) Возвращает выборки для указанной полосы для указанного прямоугольника пикселей в массиве int, по одной выборке на элемент массива. |
int[] |
getSampleSize() Возвращает количество битов на выборку для всех полос. |
int |
getSampleSize(int band) Возвращает количество битов на выборку для указанной полосы. |
int |
getScanlineStride() Возвращает шаг строки сканирования этого SinglePixelPackedSampleModel. |
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,
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.SampleModel
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait Конструкторы
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks) Создаёт SinglePixelPackedSampleModel с количеством каналов, равным bitMasks.length. Каждый образец хранится в элементе массива данных в позиции, соответствующей его маске бита. Каждая маска бита должна быть смежной, и маски не должны перекрываться. Маски битов, превышающие ёмкость типа данных, усекаются.
- Параметры:
-
dataType- Тип данных для хранения образцов. -
w- Ширина (в пикселях) области данных изображения. -
h- Высота (в пикселях) области данных изображения. -
bitMasks- Маски битов для всех каналов. - Исключения:
-
IllegalArgumentException- еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT
SinglePixelPackedSampleModel
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks) Создаёт SinglePixelPackedSampleModel с количеством каналов, равным bitMasks.length, и шагом строки, равным scanlineStride элементам массива данных. Каждый образец хранится в элементе массива данных в позиции, соответствующей его маске бита. Каждая маска бита должна быть смежной, и маски не должны перекрываться. Маски битов, превышающие ёмкость типа данных, усекаются.
- Параметры:
-
dataType- Тип данных для хранения образцов. -
w- Ширина (в пикселях) области данных изображения. -
h- Высота (в пикселях) области данных изображения. -
scanlineStride- Шаг строки данных изображения. -
bitMasks- Маски битов для всех каналов. - Исключения:
-
IllegalArgumentException- еслиwилиhне больше 0 -
IllegalArgumentException- если какая-либо маска вbitMaskне является смежной -
IllegalArgumentException- еслиdataTypeне является ниDataBuffer.TYPE_BYTE, ниDataBuffer.TYPE_USHORT, ниDataBuffer.TYPE_INT
Методы
getNumDataElements
public int getNumDataElements()
Возвращает количество элементов данных, необходимых для передачи одного пикселя через методы getDataElements и setDataElements. Для SinglePixelPackedSampleModel это один.
- Унаследован от:
-
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()
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w,
int h) Создаёт новый SinglePixelPackedSampleModel с заданной шириной и высотой. Новый SinglePixelPackedSampleModel будет иметь тот же тип данных хранения и маски битов, что и этот SinglePixelPackedSampleModel.
- Унаследован от:
-
createCompatibleSampleModelв классеSampleModel - Параметры:
-
w- ширина получаемогоSampleModel -
h- высота получаемогоSampleModel - Возвращает:
- SinglePixelPackedSampleModel со заданной шириной и высотой.
- Исключения:
-
IllegalArgumentException- еслиwилиhне больше 0
createDataBuffer
public DataBuffer createDataBuffer()
Создаёт DataBuffer, соответствующий этому SinglePixelPackedSampleModel. Тип данных и размер DataBuffer будут согласованы с этим SinglePixelPackedSampleModel. DataBuffer будет иметь один банк.
- Унаследован от:
-
createDataBufferв классеSampleModel - Возвращает:
- DataBuffer, соответствующий этому
SampleModel.
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,y, можно получить из DataBuffer data, использующего SinglePixelPackedSampleModel sppsm следующим образом:
data.getElem(sppsm.getOffset(x, y));.
- Параметры:
-
x- координата X указанного пикселя -
y- координата Y указанного пикселя - Возвращает:
- смещение указанного пикселя.
getBitOffsets
public int[] getBitOffsets()
Возвращает смещения битов в элементе массива данных, представляющем пиксель для всех каналов.
- Возвращает:
- смещения битов, представляющие пиксель для всех каналов.
getBitMasks
public int[] getBitMasks()
Возвращает маски битов для всех каналов.
- Возвращает:
- маски битов для всех каналов.
getScanlineStride
public int getScanlineStride()
Возвращает шаг строки этого SinglePixelPackedSampleModel.
- Возвращает:
- шаг строки этого SinglePixelPackedSampleModel.
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)
Создаёт новый SinglePixelPackedSampleModel с подмножеством каналов этого SinglePixelPackedSampleModel. Новый SinglePixelPackedSampleModel может использоваться с любым DataBuffer, с которым может использоваться существующий SinglePixelPackedSampleModel. Новая комбинация SinglePixelPackedSampleModel/DataBuffer будет представлять изображение с подмножеством каналов исходной комбинации SinglePixelPackedSampleModel/DataBuffer.
- Унаследован от:
-
createSubsetSampleModelв классеSampleModel - Параметры:
-
bands- подмножество каналов этого SinglePixelPackedSampleModel - Возвращает:
- SinglePixelPackedSampleModel с подмножеством каналов этого SinglePixelPackedSampleModel.
- Исключения:
-
RasterFormatException- если длина аргумента bands больше числа каналов в модели образца.
getDataElements
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data) Возвращает данные для одного пикселя в примитивном массиве типа TransferType. Для SinglePixelPackedSampleModel массив будет иметь один элемент, а тип будет таким же, как тип данных хранения. Как правило, obj следует передавать как null, чтобы объект создавался автоматически и был правильного примитивного типа данных.
Следующий код иллюстрирует передачу данных для одного пикселя из DataBuffer db1, чья структура хранения описана SinglePixelPackedSampleModel sppsm1, в DataBuffer db2, чья структура хранения описана SinglePixelPackedSampleModel sppsm2. Передача, как правило, будет более эффективной, чем использование getPixel/setPixel.
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null,
db1), db2); Использование getDataElements/setDataElements для передачи между двумя парами DataBuffer/SampleModel допустимо, если SampleModels имеют одинаковое количество каналов, соответствующие каналы имеют одинаковое количество бит на образец, и TransferTypes одинаковы. Если obj не null, он должен быть примитивным массивом типа TransferType. В противном случае, выбрасывается ClassCastException. Возможно выбрасывание ArrayIndexOutOfBoundsException, если координаты не в пределах границ или если obj не null, и недостаточно большой для хранения данных пикселя.
- Унаследован от:
-
getDataElementsв классеSampleModel - Параметры:
-
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в классеSampleModel - Параметры:
-
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в классеSampleModel - Параметры:
-
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) Возвращает в виде int выборку в указанном канале для пикселя, расположенного по координатам (x, y). Может быть выброшено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Указано в:
-
getSampleв классеSampleModel - Параметры:
-
x- Координата X пикселя. -
y- Координата Y пикселя. -
b- Канал для возврата. -
data- Объект DataBuffer, содержащий данные изображения. - Возвращает:
- выборку в указанном канале для указанного пикселя.
- См. также:
setSample(int, int, int, int, DataBuffer)
getSamples
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data) Возвращает выборки для указанного канала для указанного прямоугольника пикселей в массиве int, по одной выборке на элемент массива. Может быть выброшено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Переопределяет:
-
getSamplesв классеSampleModel - Параметры:
-
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. Для SinglePixelPackedSampleModel только первый элемент массива будет содержать действительные данные, и тип массива должен быть таким же, как тип данных хранения SinglePixelPackedSampleModel.
Следующий код демонстрирует передачу данных для одного пикселя из DataBuffer db1, структура хранения которого описывается SinglePixelPackedSampleModel sppsm1, в DataBuffer db2, структура хранения которого описывается SinglePixelPackedSampleModel sppsm2. Передача, как правило, будет более эффективной, чем использование getPixel/setPixel.
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.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)
setPixels
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data) Устанавливает все выборки для прямоугольника пикселей из массива int, содержащего по одной выборке на элемент массива. Может быть выброшено исключение ArrayIndexOutOfBoundsException, если координаты находятся за пределами границ.
- Переопределяет:
-
setPixelsв классеSampleModel - Параметры:
-
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в классеSampleModel - Параметры:
-
x- Координата X пикселя. -
y- Координата Y пикселя. -
b- Канал для установки. -
s- Входная выборка в виде int. -
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в классеSampleModel - Параметры:
-
x- Координата X верхнего левого пикселя. -
y- Координата Y верхнего левого пикселя. -
w- Ширина прямоугольника пикселей. -
h- Высота прямоугольника пикселей. -
b- Канал для установки. -
iArray- Входные выборки в массиве int. -
data- Объект DataBuffer, содержащий данные изображения. - См. также:
getSamples(int, int, int, int, int, int[], DataBuffer)
equals
public boolean equals(Object o)
Описание скопировано из класса: Object
Указывает, является ли другой объект "равным" данному объекту.
Метод equals реализует отношение эквивалентности для ссылок на объекты, отличных от null:
- Он рефлексивен: для любой ссылки на объект
x, методx.equals(x)должен возвращатьtrue. - Он симметричен: для любых ссылок на объекты
xиy, методx.equals(y)должен возвращатьtrueтогда и только тогда, когда методy.equals(x)возвращаетtrue. - Он транзитивен: для любых ссылок на объекты
x,yиz, еслиx.equals(y)возвращаетtrueиy.equals(z)возвращаетtrue, тоx.equals(z)должен возвращатьtrue. - Он постоянен: для любых ссылок на объекты
xиy, многократные вызовы методаx.equals(y)последовательно возвращаютtrueили последовательно возвращаютfalse, при условии, что никакая информация, используемая в сравненияхequalsобъектов, не изменяется. - Для любой ссылки на объект
x, методx.equals(null)должен возвращатьfalse.
Метод equals для класса Object реализует наиболее точное отношение эквивалентности для объектов; другими словами, для любых ссылок на объекты x и y, этот метод возвращает true тогда и только тогда, когда x и y ссылаются на один и тот же объект (x == y имеет значение true).
Обратите внимание, что обычно необходимо переопределить метод hashCode всякий раз, когда переопределяется этот метод, чтобы сохранить общий контракт для метода hashCode, который гласит, что равные объекты должны иметь равные хэш-коды.
- Overrides:
-
equalsв классеObject - Parameters:
-
o— объект-ссылка для сравнения. - Returns:
-
trueесли этот объект совпадает с аргументом obj;falseв противном случае. - See Also:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Описание, скопированное из класса: Object
Возвращает значение хэш-кода для объекта. Этот метод поддерживается для использования в хэш-таблицах, таких как те, которые предоставляются HashMap.
Общий контракт метода hashCode:
- Всякий раз, когда он вызывается для одного и того же объекта более одного раза во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать одно и то же целое число, при условии, что информация, используемая вequalsсравнениях объекта, не изменяется. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому выполнению того же приложения. - Если два объекта равны в соответствии с методом
equals(Object), тогда вызов методаhashCodeдля каждого из двух объектов должен дать один и тот же результат целого числа. - Не требуется, чтобы если два объекта не равны в соответствии с методом
Object.equals(java.lang.Object), то вызов методаhashCodeдля каждого из двух объектов обязательно должен давать разные целочисленные результаты. Однако программист должен понимать, что получение различных целых результатов для неравных объектов может улучшить производительность хэш-таблиц.
Насколько это практически возможно, метод hashCode, определенный классом Object, возвращает различные целые числа для различных объектов. (Это обычно реализуется путем преобразования внутреннего адреса объекта в целое число, но эта техника реализации не требуется языком программирования Java™).
- Overrides:
-
hashCodeв классеObject - 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.