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

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.

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, equals, finalize, getClass, hashCode, 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, соответствующий этому SinglePixelPackedSampleModel.

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 - если длина аргумента каналов больше, чем количество каналов в модели образцов.

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 допустимо, если SampleModels имеют одинаковое количество каналов, соответствующие каналы имеют одинаковое количество бит на образец, и 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)

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)

© 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/SinglePixelPackedSampleModel.html

Spec-Zone .ru
спецификации, руководства, описания, API