Класс IIOParam
- Прямые известные подклассы:
ImageReadParam, ImageWriteParam
public abstract class IIOParam extends Object
ImageReadParam и ImageWriteParam. Этот класс предоставляет средства для указания области источника и области назначения. При чтении источником является поток, а назначением — изображение в памяти. При записи они меняются местами. При записи области назначения можно использовать только с модулем записи, поддерживающим замену пикселей.
Для устройств чтения и записи можно задать прореживание с помощью перемещаемой сетки прореживания.
Можно выбрать подмножества полос источника и назначения.
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected IIOParamController |
controller |
IIOParamController, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController. |
protected IIOParamController |
defaultController |
Контроллер IIOParamController по умолчанию, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController. |
protected Point |
destinationOffset |
Смещение в области назначения, куда следует поместить декодированный пиксель в верхнем левом углу. |
protected ImageTypeSpecifier |
destinationType |
ImageTypeSpecifier, используемый для создания изображения назначения при чтении или для задания выходного типа цвета при записи. |
protected int[] |
sourceBands |
Массив int, указывающих, какие полосы источника будут использоваться, либо null. |
protected Rectangle |
sourceRegion |
Область источника; null, если она не задана. |
protected int |
sourceXSubsampling |
Прореживание по горизонтали. |
protected int |
sourceYSubsampling |
Прореживание по вертикали. |
protected int |
subsamplingXOffset |
Горизонтальное смещение сетки прореживания, применяемое перед прореживанием. |
protected int |
subsamplingYOffset |
Вертикальное смещение сетки прореживания, применяемое перед прореживанием. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищенный конструктор может вызываться только подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
activateController() |
Активирует установленный IIOParamController для этого объекта IIOParam и возвращает полученное значение. |
IIOParamController |
getController() |
Возвращает текущий установленный IIOParamController. |
IIOParamController |
getDefaultController() |
Возвращает IIOParamController по умолчанию, если он есть, независимо от текущего установленного контроллера. |
Point |
getDestinationOffset() |
Возвращает смещение в изображении назначения, в котором следует разместить пиксели. |
ImageTypeSpecifier |
getDestinationType() |
Возвращает тип изображения, которое будет возвращено при чтении, если он был задан вызовом setDestination(ImageTypeSpecifier), в виде ImageTypeSpecifier. |
int[] |
getSourceBands() |
Возвращает набор используемых полос источника. |
Rectangle |
getSourceRegion() |
Возвращает используемую область источника. |
int |
getSourceXSubsampling() |
Возвращает количество столбцов источника, на которое нужно сместиться для каждого пикселя. |
int |
getSourceYSubsampling() |
Возвращает количество строк, на которое нужно сместиться для каждого пикселя. |
int |
getSubsamplingXOffset() |
Возвращает горизонтальное смещение сетки прореживания. |
int |
getSubsamplingYOffset() |
Возвращает вертикальное смещение сетки прореживания. |
boolean |
hasController() |
Возвращает true, если для этого объекта IIOParam установлен контроллер. |
void |
setController |
Задает IIOParamController, используемый для задания параметров этого объекта IIOParam при вызове метода activateController, переопределяя любой контроллер по умолчанию. |
void |
setDestinationOffset |
Задает смещение в изображении назначения, в котором следует разместить декодированные пиксели при чтении или куда следует записать область при записи. |
void |
setDestinationType |
Задает желаемый тип изображения для изображения назначения с помощью ImageTypeSpecifier. |
void |
setSourceBands |
Задает индексы используемых полос источника. |
void |
setSourceRegion |
Задает интересующую область источника. |
void |
setSourceSubsampling |
Задает прореживание, применяемое при вводе-выводе. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API планируется удалить в будущей версии. Финализация объявлена устаревшей и планируется к удалению в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного периода реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного периода реального времени. |
Подробное описание полей
sourceRegion
protected Rectangle sourceRegion
null, если она не задана.sourceXSubsampling
protected int sourceXSubsampling
1. Значение не должно быть отрицательным или равным 0.sourceYSubsampling
protected int sourceYSubsampling
1. Значение не должно быть отрицательным или равным 0.subsamplingXOffset
protected int subsamplingXOffset
subsamplingYOffset
protected int subsamplingYOffset
sourceBands
protected int[] sourceBands
int, указывающих, какие исходные каналы будут использоваться, или null. Если задано null, набор используемых исходных каналов определяется так, как описано в комментарии к методу setSourceBands. Значения не должны быть отрицательными.destinationType
protected ImageTypeSpecifier destinationType
ImageTypeSpecifier, используемый для создания целевого изображения при чтении или для задания выходного типа цвета при записи. Если значение не задано, оно будет равно null. По умолчанию значение равно null.destinationOffset
protected Point destinationOffset
defaultController
protected IIOParamController defaultController
IIOParamController по умолчанию, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController. Подклассы, предоставляющие собственный контроллер по умолчанию, обычно графический интерфейс для задания параметров, должны установить его.- См. также:
controller
protected IIOParamController controller
IIOParamController, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController. Это значение переопределяет любой контроллер по умолчанию, даже если оно равно null.- См. также:
Подробное описание конструкторов
IIOParam
protected IIOParam()
Подробное описание методов
setSourceRegion
public void setSourceRegion(Rectangle sourceRegion)
setSourceSubsampling. Если прореживание задано так, что это количество равно нулю, будет выброшено исключение IllegalStateException. При необходимости указанная этим методом исходная область интереса будет обрезана, чтобы соответствовать границам источника, а также смещениям, ширине и высоте целевого изображения на момент фактического выполнения операции ввода-вывода.
Значение null для sourceRegion удаляет указание области, в результате чего используется всё изображение.
- Параметры:
-
sourceRegion—Rectangle, задающий исходную область интереса, илиnull. - Выбрасывает:
-
IllegalArgumentException— еслиsourceRegionне равноnullиsourceRegion.xилиsourceRegion.yотрицательно. -
IllegalArgumentException— еслиsourceRegionне равноnullиsourceRegion.widthилиsourceRegion.heightотрицательно или равно 0. -
IllegalStateException— если из-за прореживания ширина или высота этой области станет равна нулю. - См. также:
getSourceRegion
public Rectangle getSourceRegion()
setSourceRegion и будет равно null, если область не задана.- Возвращает:
- исходную область интереса в виде
Rectangleилиnull. - См. также:
setSourceSubsampling
public void setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling, int subsamplingXOffset, int subsamplingYOffset)
sourceXSubsampling и sourceYSubsampling задают период прореживания (т. е. количество строк и столбцов, на которое нужно перейти после каждого исходного пикселя). В частности, при периоде 1 используется каждая строка или столбец, а при периоде 2 — каждая вторая строка или столбец. Параметры subsamplingXOffset и subsamplingYOffset задают смещение первого прореживаемого пикселя относительно начала области (или изображения). Изменение начала сетки прореживания полезно для устранения швов при прореживании очень большого исходного изображения в целевые области, которые затем объединяются в полное прореженное изображение. Большинству пользователей следует просто оставить эти параметры равными 0. Количество используемых пикселей и строк сканирования вычисляется следующим образом.
Количество прореженных пикселей в строке сканирования определяется выражением
truncate[(width - subsamplingXOffset + sourceXSubsampling - 1)
/ sourceXSubsampling].
Если ширина области при этом равна нулю, выбрасывается исключение IllegalStateException.
Количество используемых строк сканирования можно вычислить аналогичным образом.
Возможность задать начало сетки прореживания не в начале исходной области полезна, если область используется для создания прореженных фрагментов большого изображения, ширина и высота которых не кратны периодам прореживания. Если сетка прореживания не сохраняет согласованность от фрагмента к фрагменту, на их границах появляются артефакты. Этих артефактов можно избежать, скорректировав смещение сетки прореживания для каждого фрагмента. Компромисс заключается в том, что для устранения артефактов фрагменты будут иметь неодинаковый размер. В этом случае используемое смещение сетки определяется формулой:
смещение сетки = [период - (смещение области по модулю периода)] по модулю периода)
Если sourceXSubsampling или sourceYSubsampling равно 0 или меньше, будет выброшено исключение IllegalArgumentException.
Если subsamplingXOffset или subsamplingYOffset отрицательно или больше либо равно соответствующему периоду, будет выброшено исключение IllegalArgumentException.
Метода unsetSourceSubsampling нет; для восстановления значений по умолчанию достаточно вызвать setSourceSubsampling(1, 1, 0, 0).
- Параметры:
-
sourceXSubsampling— количество столбцов между используемыми пикселями. -
sourceYSubsampling— количество строк между используемыми пикселями. -
subsamplingXOffset— горизонтальное смещение первого прореживаемого пикселя в пределах области или изображения, если область не задана. -
subsamplingYOffset— горизонтальное смещение первого прореживаемого пикселя в пределах области или изображения, если область не задана. - Выбрасывает:
-
IllegalArgumentException— если любой период отрицателен или равен 0 либо любое смещение сетки отрицательно или больше соответствующего периода. -
IllegalStateException— если исходная область такова, что прореженный результат не будет содержать пикселей.
getSourceXSubsampling
public int getSourceXSubsampling()
Если метод setSourceSubsampling не вызывался, возвращается 1 (правильное значение).
- Возвращает:
- период прореживания источника по X.
- См. также:
getSourceYSubsampling
public int getSourceYSubsampling()
Если метод setSourceSubsampling не вызывался, возвращается 1 (правильное значение).
- Возвращает:
- период прореживания источника по Y.
- См. также:
getSubsamplingXOffset
public int getSubsamplingXOffset()
Если метод setSourceSubsampling не вызывался, возвращается 0 (правильное значение).
- Возвращает:
- смещение сетки прореживания источника по X.
- См. также:
getSubsamplingYOffset
public int getSubsamplingYOffset()
Если метод setSourceSubsampling не вызывался, возвращается 0 (правильное значение).
- Возвращает:
- смещение сетки прореживания источника по Y.
- См. также:
setSourceBands
public void setSourceBands(int[] sourceBands)
Значение null указывает, что будут использоваться все исходные каналы.
При чтении средство чтения или записи выбросит исключение IllegalArgumentException, если задано значение больше наибольшего доступного индекса исходного канала или если количество используемых исходных и целевых каналов различается. Для автоматической проверки можно использовать метод ImageReader.checkReadParamBandSettings.
Семантически создаётся копия массива; изменения его содержимого после этого вызова не влияют на данный объект IIOParam.
- Параметры:
-
sourceBands— массив целочисленных индексов используемых каналов. - Выбрасывает:
-
IllegalArgumentException— еслиsourceBandsсодержит отрицательное или повторяющееся значение. - См. также:
getSourceBands
public int[] getSourceBands()
setSourceBands или равно null, если вызовов setSourceBands не было. Семантически возвращаемый массив является копией; изменения его содержимого после этого вызова не влияют на данный объект IIOParam.
- Возвращает:
- набор используемых исходных каналов или
null. - См. также:
setDestinationType
public void setDestinationType(ImageTypeSpecifier destinationType)
ImageTypeSpecifier. При чтении, если разметка целевого изображения была задана этим методом, каждый вызов метода ImageReader read будет возвращать новый объект BufferedImage, использующий формат, указанный переданным спецификатором типа. Побочным эффектом является отмена ранее заданного назначения BufferedImage с помощью ImageReadParam.setDestination(BufferedImage). Иными словами, этот метод можно рассматривать как вызов setDestination((BufferedImage)null).
При записи тип назначения может использоваться для определения типа цвета изображения. Информация SampleModel будет игнорироваться и может быть null. Например, изображение с 4 каналами может содержать данные CMYK или RGBA. Если задан тип назначения, его ColorModel переопределит любой ColorModel самого изображения. Это особенно важно при использовании setSourceBands, поскольку ColorModel изображения будет относиться ко всему изображению, а не к подмножеству записываемых каналов.
- Параметры:
-
destinationType— объектImageTypeSpecifier, используемый для определения разметки и типа цвета назначения. - См. также:
getDestinationType
public ImageTypeSpecifier getDestinationType()
setDestination(ImageTypeSpecifier), в виде объекта ImageTypeSpecifier. Если тип не задан, возвращается null.- Возвращает:
- объект
ImageTypeSpecifier, описывающий тип назначения, илиnull. - См. также:
setDestinationOffset
public void setDestinationOffset(Point destinationOffset)
При чтении область записи в целевом изображении BufferedImage начинается с этого смещения, а её ширина и высота определяются исходной областью интереса, параметрами прореживания и границами целевого изображения.
Обычная запись не зависит от этого метода; он влияет только на запись с помощью ImageWriter.replacePixels. При такой записи заданное смещение относится к изображению в выходном потоке, пиксели которого изменяются.
Метода unsetDestinationOffset нет; для восстановления значений по умолчанию достаточно вызвать setDestinationOffset(new Point(0, 0)).
- Параметры:
-
destinationOffset— смещение в целевом изображении в видеPoint. - Выбрасывает:
-
IllegalArgumentException— еслиdestinationOffsetравноnull. - См. также:
getDestinationOffset
public Point getDestinationOffset()
Если метод setDestinationOffsets не вызывался, возвращается Point с нулевыми значениями X и Y (правильное значение).
- Возвращает:
- смещение в целевом изображении в виде
Point. - См. также:
setController
public void setController(IIOParamController controller)
IIOParamController, используемый для задания параметров этого объекта IIOParam при вызове метода activateController, переопределяя любой контроллер по умолчанию. Если аргумент равен null, контроллер не будет использоваться, в том числе контроллер по умолчанию. Чтобы восстановить значение по умолчанию, используйте setController(getDefaultController()).- Параметры:
-
controller— подходящий объектIIOParamControllerилиnull. - См. также:
getController
public IIOParamController getController()
IIOParamController. Это может быть контроллер по умолчанию, если он есть, null или аргумент последнего вызова setController.- Возвращает:
- установленный в данный момент контроллер
IIOParamControllerилиnull. - См. также:
getDefaultController
public IIOParamController getDefaultController()
IIOParamController по умолчанию, если он есть, независимо от установленного в данный момент контроллера. Если контроллер по умолчанию отсутствует, возвращает null.- Возвращает:
- контроллер
IIOParamControllerпо умолчанию илиnull. - См. также:
hasController
public boolean hasController()
true, если для этого объекта IIOParam установлен контроллер. Возвращает true, если getController не вернёт null.- Возвращает:
-
true, если контроллер установлен. - См. также:
activateController
public boolean activateController()
IIOParamController для этого объекта IIOParam и возвращает полученное значение. Если метод возвращает true, все значения этого объекта IIOParam будут готовы к следующей операции чтения или записи. Если возвращается false, параметры объекта не изменятся (т. е. пользователь отменил операцию). Обычно контроллер представляет собой графический интерфейс, предоставляющий пользовательский интерфейс для подкласса IIOParam конкретного подключаемого модуля. Однако контроллеры не обязательно должны быть графическими интерфейсами.
- Возвращает:
-
true, если контроллер завершил работу обычным образом. - Выбрасывает:
-
IllegalStateException— если в данный момент контроллер не установлен. - См. также:
© 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.