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