Класс IIOParam
- Непосредственные известные подклассы:
-
ImageReadParam,ImageWriteParam
public abstract class IIOParam extends Object
ImageReadParam и ImageWriteParam. Этот класс предоставляет механизмы для указания области источника и области назначения. При чтении источником является поток, а изображение в памяти — местом назначения. При записи эти роли меняются. В случае записи области назначения могут использоваться только с писателем, поддерживающим замену пикселей.
Децимация (субдискретизация) может быть указана для читателей и писателей, используя подвижную сетку субдискретизации.
Можно выбрать подмножества полос источника и назначения.
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected IIOParamController |
controller |
Контроллер, который будет использоваться для предоставления настроек для этого объекта IIOParam при вызове метода activateController. |
protected IIOParamController |
defaultController |
Значение по умолчанию, которое будет использоваться для предоставления настроек для объекта IIOParam при вызове метода activateController. |
protected Point |
destinationOffset |
Смещение в месте назначения, где должен быть размещен верхний левый декодированный пиксель. |
protected ImageTypeSpecifier |
destinationType |
Объект, используемый для генерации изображения назначения при чтении или для установки типа выходного цвета при записи. |
protected int[] |
sourceBands |
Массив, указывающий, какие полосы источника будут использоваться, или null. |
protected Rectangle |
sourceRegion |
Область источника, если не установлена другая. |
protected int |
sourceXSubsampling |
Децимация по горизонтали, которая должна применяться. |
protected int |
sourceYSubsampling |
Децимация по вертикали, которая должна применяться. |
protected int |
subsamplingXOffset |
Горизонтальное смещение, которое должно применяться к сетке субдискретизации перед субдискретизацией. |
protected int |
subsamplingYOffset |
Вертикальное смещение, которое должно применяться к сетке субдискретизации перед субдискретизацией. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищенный конструктор может вызываться только подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
activateController() |
Активирует установленный контроллер для этого объекта IIOParam и возвращает полученное значение. |
IIOParamController |
getController() |
Возвращает текущий установленный контроллер. |
IIOParamController |
getDefaultController() |
Возвращает значение по умолчанию, если оно есть, независимо от установленного контроллера. |
Point |
getDestinationOffset() |
Возвращает смещение в изображении назначения, в котором будут размещаться пиксели. |
ImageTypeSpecifier |
getDestinationType() |
Возвращает тип изображения, которое должно быть возвращено при чтении, если оно было установлено вызовом setDestination(ImageTypeSpecifier), как ImageTypeSpecifier. |
int[] |
getSourceBands() |
Возвращает набор используемых полос источника. |
Rectangle |
getSourceRegion() |
Возвращает область источника для использования. |
int |
getSourceXSubsampling() |
Возвращает количество столбцов источника, которое необходимо продвинуть для каждого пикселя. |
int |
getSourceYSubsampling() |
Возвращает количество строк, которое необходимо продвинуть для каждого пикселя. |
int |
getSubsamplingXOffset() |
Возвращает горизонтальное смещение сетки субдискретизации. |
int |
getSubsamplingYOffset() |
Возвращает вертикальное смещение сетки субдискретизации. |
boolean |
hasController() |
Возвращает контроллер, если он установлен для этого объекта IIOParam. |
void |
setController |
Устанавливает контроллер, который будет использоваться для предоставления настроек для этого объекта 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
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- aRectangleуказывающий область источника, представляющую интерес, или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 источника.
- См. также:
Смещение по оси X для подвыборки
public int getSubsamplingXOffset()
Если setSourceSubsampling не был вызван, возвращается 0 (что является правильным значением).
- Возвращает:
- смещение сетки подвыборки по оси X.
- См. также:
Смещение по оси Y для подвыборки
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)
При чтении, если макет назначения был установлен с помощью этого метода, каждый вызов метода 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), как спецификатор типа. Если не был установлен, возвращается null. - Возвращает:
- спецификатор типа назначения или
null. - См. также:
setDestinationOffset
public void setDestinationOffset(Point destinationOffset)
При чтении, область для записи в целевом BufferedImage начнётся с этого смещения и будет иметь ширину и высоту, определённые областью интереса источника, параметрами подвыборки и границами назначения.
Обычные записи не затрагиваются этим методом, только записи, выполненные с помощью ImageWriter.replacePixels. Для таких записей, указанное смещение находится в изображении выходного потока, пиксели которого изменяются.
Нет метода unsetDestinationOffset; просто вызовите setDestinationOffset(new Point(0, 0)) для восстановления значений по умолчанию.
- Параметры:
-
destinationOffset- смещение в назначении, как точка. - Исключения:
-
IllegalArgumentException- еслиdestinationOffsetnull. - См. также:
getDestinationOffset
public Point getDestinationOffset()
Если setDestinationOffsets не был вызван, возвращается точка с нулевыми значениями X и Y (что является правильным значением).
- Возвращает:
- смещение назначения как точка.
- См. также:
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()
null.- Возвращает:
- контроллер по умолчанию, или
null. - См. также:
hasController
public boolean hasController()
true, если контроллер установлен для этого объекта IIOParam. Это вернёт true, если getController не вернёт null.- Возвращает:
-
trueесли контроллер установлен. - См. также:
activateController
public boolean activateController()
IIOParamController для этого IIOParam объекта и возвращает результирующее значение. Когда этот метод возвращает true, все значения для этого IIOParam объекта будут готовы для следующей операции чтения или записи. Если возвращается false, никакие настройки в этом объекте не будут изменены (т.е., пользователь отменил операцию). Обычно контроллер представляет собой графический интерфейс, предоставляющий пользовательский интерфейс для подкласса IIOParam для конкретного плагина. Однако контроллеры не обязательно должны быть графическими интерфейсами.
- Возвращает:
-
trueв случае нормального завершения работы контроллера. - Выбрасывает:
-
IllegalStateException- если в настоящее время не установлен контроллер. - См. также:
© 1993, 2021, 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/17/docs/api/java.desktop/javax/imageio/IIOParam.html