Класс 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 |
Задаёт прореживание субдискретизацией, применяемое при вводе-выводе. |
Подробное описание полей
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
ints, указывающий, какие исходные каналы будут использоваться, или 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. Например, изображение с четырьмя каналами может содержать данные 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/imageio/IIOParam.html