Класс ImageReadParam
- Прямые известные подклассы:
-
JPEGImageReadParam,TIFFImageReadParam
public class ImageReadParam extends IIOParam
ImageReader. Изображение, закодированное как часть файла или потока, можно представить как расширяющееся в нескольких измерениях: пространственные измерения ширины и высоты, количество полос и количество проходов прогрессивного декодирования. Этот класс позволяет выбрать непрерывную (гипер)прямоугольную подобласть изображения во всех этих измерениях для декодирования. Кроме того, пространственные измерения могут быть неравномерно субдискретизированы. Наконец, преобразования цвета и формата могут быть заданы путем управления ColorModel и SampleModel изображения назначения, либо путем предоставления BufferedImage, либо с использованием ImageTypeSpecifier.
Объект ImageReadParam используется для указания того, как изображение или набор изображений будет преобразовано при вводе из потока в контексте фреймворка Java Image I/O. Плагин для определенного формата изображения вернёт экземпляры ImageReadParam из метода getDefaultReadParam его реализации ImageReader.
Состояние, поддерживаемое экземпляром ImageReadParam, не зависит от любого конкретного декодируемого изображения. При фактическом декодировании значения, установленные в параметре чтения, комбинируются с фактическими свойствами изображения, декодируемого из потока, и назначением BufferedImage, которое получит данные декодированных пикселей. Например, область источника, установленная с помощью setSourceRegion, сначала будет пересечена с фактической допустимой областью источника. Результат будет преобразован значением, возвращаемым getDestinationOffset, а полученный прямоугольник пересечётся с фактической допустимой областью назначения, чтобы получить область назначения, которая будет записана.
Параметры, заданные ImageReadParam, применяются к изображению следующим образом. Во-первых, если размер рендеринга был задан с помощью setSourceRenderSize, все декодированное изображение рендерится в размерах, заданных getSourceRenderSize. В противном случае изображение имеет свой естественный размер, определяемый ImageReader.getWidth и ImageReader.getHeight.
Далее, изображение обрезается относительно области источника, заданной getSourceXOffset, getSourceYOffset, getSourceWidth и getSourceHeight.
Полученная область затем субдискретизируется в соответствии с коэффициентами, заданными в IIOParam.setSourceSubsampling. Первый пиксель, количество пикселей в строке и количество строк зависят от настроек субдискретизации. Вызовите минимальные координаты X и Y полученного прямоугольника (minX, minY), его ширину w и высоту h.
Этот прямоугольник смещается на (getDestinationOffset().x, getDestinationOffset().y) и обрезается относительно границ назначения. Если изображение назначения не было установлено, назначение определяется шириной getDestinationOffset().x + w и высотой getDestinationOffset().y + h, так что все пиксели области источника могут быть записаны в назначение.
Пиксели, попавшие после субдискретизации в изображение назначения и записанные в одном из проходов прогрессивного декодирования, заданных getSourceMinProgressivePass и getSourceNumProgressivePasses, передаются на следующий этап.
Наконец, исходные образцы каждого пикселя отображаются в полосы назначения в соответствии с алгоритмом, описанным в комментарии к setDestinationBands.
Плагины-писатели могут расширить функциональность ImageReadParam, предоставив подкласс, реализующий дополнительные, специфичные для плагина интерфейсы. Плагин должен документировать доступные интерфейсы и то, как их использовать. Чтецы будут игнорировать любые расширенные возможности подкласса ImageReadParam, о которых им неизвестно. Также они могут игнорировать любые необязательные функции, которые обычно отключаются при создании собственных экземпляров ImageReadParam с помощью getDefaultReadParam.
Обратите внимание, что, если метод запроса не существует для функции, она должна поддерживаться всеми реализациями ImageReader (например, размер рендеринга источника является необязательным, но субдискретизация должна поддерживаться).
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected boolean |
canSetSourceRenderSize |
true если этот ImageReadParam разрешает задавать размеры рендеринга источника. |
protected BufferedImage |
destination |
Текущее назначение BufferedImage, или null, если не задано. |
protected int[] |
destinationBands |
Набор полос назначения для использования, как массив int. |
protected int |
minProgressivePass |
Минимальный индекс прохода прогрессивного декодирования для чтения из источника. |
protected int |
numProgressivePasses |
Максимальное количество проходов прогрессивного декодирования для чтения из источника. |
protected Dimension |
sourceRenderSize |
Желаемая ширина и высота рендеринга источника, если canSetSourceRenderSize равен true, или null. |
Поля, объявленные в классе javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ImageReadParam() |
Создаёт ImageReadParam. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canSetSourceRenderSize() |
Возвращает true, если этот читатель позволяет изображению источника рендериться в произвольном размере в процессе декодирования с помощью метода setSourceRenderSize. |
BufferedImage |
getDestination() |
Возвращает BufferedImage, текущее значение, установленное методом setDestination, или null, если не установлено. |
int[] |
getDestinationBands() |
Возвращает набор индексов полос, где будут размещены данные. |
int |
getSourceMaxProgressivePass() |
Если getSourceNumProgressivePasses равно Integer.MAX_VALUE, возвращает Integer.MAX_VALUE. |
int |
getSourceMinProgressivePass() |
Возвращает индекс первого прохода прогрессивного декодирования, который будет декодирован. |
int |
getSourceNumProgressivePasses() |
Возвращает количество проходов прогрессивного декодирования, которые будут декодированы. |
Dimension |
getSourceRenderSize() |
Возвращает ширину и высоту изображения источника, как оно будет рендериться во время декодирования, если они были установлены с помощью метода setSourceRenderSize. |
void |
setDestination |
Предоставляет BufferedImage для использования в качестве назначения для декодированных пиксельных данных. |
void |
setDestinationBands |
Устанавливает индексы полос назначения, где будут размещены данные. |
void |
setSourceProgressivePasses |
Устанавливает диапазон проходов прогрессивного декодирования, которые будут декодированы. |
void |
setSourceRenderSize |
Если изображение может рендериться в произвольном размере, устанавливает ширину и высоту источника в заданные значения. |
Методы, объявленные в классе javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
Подробное описание полей
canSetSourceRenderSize
protected boolean canSetSourceRenderSize
true это ImageReadParam позволяет установить размеры рендеринга источника. По умолчанию значение равно false. Подклассы должны установить это значение вручную. Подклассы, которые не поддерживают установку размера рендеринга источника, должны установить это значение в false.
sourceRenderSize
protected Dimension sourceRenderSize
canSetSourceRenderSize является true или null. Подклассы, которые не поддерживают установку размера рендеринга источника, могут игнорировать это значение.
destination
protected BufferedImage destination
BufferedImage или null, если не задано. По умолчанию значение равно null.destinationBands
protected int[] destinationBands
int. По умолчанию значение равно null, указывающее, что все целевые полосы должны быть записаны в порядке.minProgressivePass
protected int minProgressivePass
Подклассы должны убедиться, что это значение неотрицательно.
numProgressivePasses
protected int numProgressivePasses
Integer.MAX_VALUE, что указывает на то, что должны быть декодированы проходы до и включая последний доступный. Подклассы должны убедиться, что это значение положительно. Кроме того, если это значение не равно Integer.MAX_VALUE, то minProgressivePass + numProgressivePasses - 1 не должно превышать Integer.MAX_VALUE.
Подробное описание конструкторов
ImageReadParam
public ImageReadParam()
ImageReadParam.Подробное описание методов
setDestination
public void setDestination(BufferedImage destination)
BufferedImage, который будет использоваться в качестве назначения для декодированных пиксельных данных. Текущая устанавливаемая картинка будет записана методами read, readAll и readRaster, и ссылка на неё будет возвращена этими методами. Пиксельные данные из перечисленных методов будут записаны, начиная со смещения, указанного в getDestinationOffset.
Если destination является null, будет возвращена вновь созданная BufferedImage.
Во время чтения изображение проверяется, чтобы убедиться, что его ColorModel и SampleModel соответствуют одному из ImageTypeSpecifier, возвращаемых методом ImageReader's getImageTypes. Если это не так, чтец сгенерирует исключение IIOException.
- Параметры:
-
destination- BufferedImage для записи, илиnull. - См. также:
getDestination
public BufferedImage getDestination()
BufferedImage, текущую установку метода setDestination, или null, если установка отсутствует.- Возвращает:
- BufferedImage для записи.
- См. также:
setDestinationBands
public void setDestinationBands(int[] destinationBands)
Значение null указывает, что будут использоваться все целевые полосы.
Выбор подмножества целевых полос не повлияет на количество полос в выходном изображении при чтении, если целевое изображение не указано; созданное целевое изображение всё равно будет иметь то же количество полос, что и если этот метод никогда не вызывался. Если требуется другое количество полос в целевом изображении, нужно указать изображение с помощью метода ImageReadParam.setDestination.
При чтении или записи чтец или писатель сгенерируют исключение IllegalArgumentException, если указано значение, большее, чем максимальный индекс целевой полосы, или если количество полос источника и целевых полос отличаются. Для автоматизации этой проверки можно использовать метод ImageReader.checkReadParamBandSettings.
- Параметры:
-
destinationBands- массив целочисленных индексов полос для использования. - Исключения:
-
IllegalArgumentException- еслиdestinationBandsсодержит отрицательное или дублирующееся значение. - См. также:
getDestinationBands
public int[] getDestinationBands()
null, что означает, что будут использоваться все целевые полосы.- Возвращает:
- индексы целевых полос для использования, или
null. - См. также:
canSetSourceRenderSize
public boolean canSetSourceRenderSize()
true, если этот читатель позволяет рендерить исходное изображение с произвольным размером в процессе декодирования, используя метод setSourceRenderSize. Если этот метод возвращает false, вызовы setSourceRenderSize сгенерируют исключение UnsupportedOperationException.- Возвращает:
-
true, если установка размера рендеринга источника поддерживается. - См. также:
setSourceRenderSize
public void setSourceRenderSize(Dimension size) throws UnsupportedOperationException
getWidth и getHeight в ImageReader, не изменяются этим методом; они продолжат возвращать размер по умолчанию для изображения. Аналогично, если изображение также разложено на плитки, ширина и высота плитки указываются относительно размера по умолчанию. Обычно ширина и высота должны выбираться таким образом, чтобы отношение ширины к высоте близко соответствовало соотношению сторон изображения, возвращаемому методом ImageReader.getAspectRatio.
Если этот плагин не позволяет установить размер рендеринга, будет сгенерировано исключение UnsupportedOperationException.
Для удаления установки размера рендеринга, передайте значение null для size.
- Параметры:
-
size-Dimension, указывающее желаемую ширину и высоту. - Исключения:
-
IllegalArgumentException- если ширина или высота отрицательные или равны 0. -
UnsupportedOperationException- если изменение размера изображения не поддерживается этим плагином. - См. также:
getSourceRenderSize
public Dimension getSourceRenderSize()
setSourceRenderSize. Значение null указывает, что установка не была произведена.- Возвращает:
- ширину и высоту рендерируемого исходного изображения как
Dimension. - См. также:
setSourceProgressivePasses
public void setSourceProgressivePasses(int minPass, int numPasses)
Проходной пас — это повторная кодировка всего изображения, как правило, с постепенно более высоким эффективным разрешением, но требующий большей пропускной способности передачи. Наиболее распространенное использование прогрессивного кодирования встречается в формате JPEG, где последовательные проходы включают более подробные представления высокочастотного содержимого изображения.
Фактическое количество проходов для декодирования определяется во время декодирования, на основе количества фактических проходов, доступных в потоке. Таким образом, если minPass + numPasses - 1 больше, чем индекс последнего доступного прохода, декодирование завершится этим проходом.
Значение numPasses Integer.MAX_VALUE указывает, что должны читаться все проходы с minPass и далее. В противном случае, индекс последнего прохода (т.е., minPass + numPasses - 1) не должен превышать Integer.MAX_VALUE.
Нет метода unsetSourceProgressivePasses; тот же эффект может быть достигнут путем вызова setSourceProgressivePasses(0, Integer.MAX_VALUE).
- Параметры:
-
minPass- индекс первого прохода для декодирования. -
numPasses- максимальное количество проходов для декодирования. - Исключения:
-
IllegalArgumentException- еслиminPassотрицательное,numPassesотрицательное или 0, илиnumPassesменьшеInteger.MAX_VALUE, ноminPass + numPasses - 1большеINTEGER.MAX_VALUE. - См. также:
getSourceMinProgressivePass
public int getSourceMinProgressivePass()
- Возвращает:
- индекс первого прохода, который будет декодирован.
- См. также:
getSourceMaxProgressivePass
public int getSourceMaxProgressivePass()
getSourceNumProgressivePasses равно Integer.MAX_VALUE, возвращает Integer.MAX_VALUE. В противном случае, возвращает getSourceMinProgressivePass() +
getSourceNumProgressivePasses() - 1.- Возвращает:
- индекс последнего прохода для чтения, или
Integer.MAX_VALUE.
getSourceNumProgressivePasses
public int getSourceNumProgressivePasses()
Integer.MAX_VALUE (что является правильным значением).- Возвращает:
- количество проходов, которые будут декодированы.
- См. также:
© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/imageio/ImageReadParam.html