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