Spec-Zone.ru › OpenJDK 25

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

Краткое описание полей

Поля, объявленные в классе 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, содержащий по одному отсчёту в каждом элементе массива.

Методы, объявленные в классе SampleModel

getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples

Методы, объявленные в классе 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, соответствующий этому 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 — подмножество каналов этого SampleModel
Возвращает:
SampleModel с подмножеством каналов этого SampleModel.
Исключения:
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 допустимо, если SampleModel имеют одинаковое количество каналов, соответствующие каналы имеют одинаковое количество битов на отсчет, а TransferType совпадают.

Если 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)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.desktop/java/awt/image/SinglePixelPackedSampleModel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API