Spec-Zone.ru › OpenJDK 25

Класс ImageReadParam

java.lang.Object
javax.imageio.IIOParam
javax.imageio.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 (например, размер отображения источника необязателен, а поддержка субдискретизации обязательна).

См. также:
  • ImageReader
  • ImageWriter
  • ImageWriteParam

Краткое описание полей

Модификатор и тип Поле Описание
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.

Поля, объявленные в классе 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 destination)
Задаёт BufferedImage, используемое в качестве назначения для декодированных пиксельных данных.
void setDestinationBands(int[] destinationBands)
Задаёт индексы полос назначения, в которые будут помещены данные.
void setSourceProgressivePasses(int minPass, int numPasses)
Задаёт диапазон прогрессивных проходов, которые будут декодированы.
void setSourceRenderSize(Dimension size)
Если изображение можно отображать в произвольном размере, задаёт ширину и высоту источника равными указанным значениям.

Методы, объявленные в классе IIOParam

activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

canSetSourceRenderSize

protected boolean canSetSourceRenderSize
true, если этот ImageReadParam позволяет задать размеры отображения источника. По умолчанию значение равно false. Подклассы должны задавать это значение вручную.

ImageReaderы, не поддерживающие задание размера отображения источника, должны устанавливать для этого значения false.

sourceRenderSize

protected Dimension sourceRenderSize
Желаемые ширина и высота отображения источника, если canSetSourceRenderSize равно true, или null.

ImageReaderы, не поддерживающие задание размера отображения источника, могут игнорировать это значение.

destination

protected BufferedImage destination
Текущее изображение назначения BufferedImage или null, если оно не задано. По умолчанию значение равно null.

destinationBands

protected int[] destinationBands
Набор полос назначения, которые будут использоваться, в виде массива int. По умолчанию значение равно null, что означает, что все полосы назначения будут записаны по порядку.

minProgressivePass

protected int minProgressivePass
Минимальный индекс прогрессивного прохода для чтения из источника. По умолчанию значение равно 0, что означает декодирование проходов, начиная с первого доступного.

Подклассы должны гарантировать, что это значение неотрицательно.

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, возвращаемых методом getImageTypes средства чтения ImageReader. Если соответствия нет, средство чтения вызовет исключение IIOException.

Параметры:
destination — BufferedImage, в который будут записываться данные, или null.
См. также:
  • getDestination()

getDestination

public BufferedImage getDestination()
Возвращает BufferedImage, заданный в данный момент методом setDestination, или null, если значение не задано.
Возвращает:
BufferedImage, в который будут записываться данные.
См. также:
  • setDestination(BufferedImage)

setDestinationBands

public void setDestinationBands(int[] destinationBands)
Задаёт индексы полос назначения, в которые будут помещены данные. Повторяющиеся индексы не допускаются.

Значение null означает, что будут использоваться все полосы назначения.

Выбор подмножества полос назначения не влияет на количество полос выходного изображения при чтении, если изображение назначения не задано: созданное изображение назначения по-прежнему будет иметь столько же полос, сколько имело бы, если бы этот метод не вызывался. Если требуется другое количество полос в изображении назначения, необходимо передать изображение с помощью метода ImageReadParam.setDestination.

Во время чтения или записи средство чтения или записи вызовет исключение IllegalArgumentException, если указано значение, превышающее наибольший индекс полосы назначения, или если различается количество используемых полос источника и назначения. Для автоматической проверки можно использовать метод ImageReader.checkReadParamBandSettings.

Параметры:
destinationBands — массив целочисленных индексов используемых полос.
Вызывает:
IllegalArgumentException — если destinationBands содержит отрицательное или повторяющееся значение.
См. также:
  • getDestinationBands()
  • IIOParam.getSourceBands()
  • ImageReader.checkReadParamBandSettings(ImageReadParam, int, int)

getDestinationBands

public int[] getDestinationBands()
Возвращает набор индексов полос, в которые будут помещены данные. Если значение не задано, возвращается null, указывающее, что будут использоваться все полосы назначения.
Возвращает:
индексы используемых полос назначения или null.
См. также:
  • setDestinationBands(int[])

canSetSourceRenderSize

public boolean canSetSourceRenderSize()
Возвращает true, если это средство чтения позволяет отображать исходное изображение в произвольном размере в процессе декодирования с помощью метода setSourceRenderSize. Если этот метод возвращает false, вызовы setSourceRenderSize приведут к исключению UnsupportedOperationException.
Возвращает:
true, если поддерживается задание размера отображения источника.
См. также:
  • setSourceRenderSize(Dimension)

setSourceRenderSize

public void setSourceRenderSize(Dimension size) throws UnsupportedOperationException
Если изображение можно отображать в произвольном размере, задаёт ширину и высоту источника равными указанным значениям. Обратите внимание: значения, возвращаемые методами getWidth и getHeight для ImageReader, этим методом не изменяются; они по-прежнему возвращают размер изображения по умолчанию. Аналогично, если изображение разбито на плитки, ширина и высота плитки задаются относительно размера по умолчанию.

Как правило, ширину и высоту следует выбирать так, чтобы их отношение как можно точнее соответствовало соотношению сторон изображения, возвращаемому методом ImageReader.getAspectRatio.

Если этот подключаемый модуль не позволяет задавать размер отображения, будет вызвано исключение UnsupportedOperationException.

Чтобы сбросить размер отображения, передайте значение null для size.

Параметры:
size — Dimension, задающий желаемые ширину и высоту.
Вызывает:
IllegalArgumentException — если ширина или высота отрицательна либо равна 0.
UnsupportedOperationException — если подключаемый модуль не поддерживает изменение размера изображения.
См. также:
  • getSourceRenderSize()
  • ImageReader.getWidth(int)
  • ImageReader.getHeight(int)
  • ImageReader.getAspectRatio(int)

getSourceRenderSize

public Dimension getSourceRenderSize()
Возвращает ширину и высоту исходного изображения в том виде, в котором оно будет отображаться при декодировании, если эти значения заданы методом setSourceRenderSize. Значение null означает, что размер не задан.
Возвращает:
ширину и высоту отображаемого исходного изображения в виде Dimension.
См. также:
  • setSourceRenderSize(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()
  • getSourceMaxProgressivePass()

getSourceMinProgressivePass

public int getSourceMinProgressivePass()
Возвращает индекс первого прогрессивного прохода, который будет декодирован. Если значение не задано, возвращается 0 (что является правильным значением).
Возвращает:
индекс первого декодируемого прохода.
См. также:
  • setSourceProgressivePasses(int, int)
  • getSourceNumProgressivePasses()

getSourceMaxProgressivePass

public int getSourceMaxProgressivePass()
Если getSourceNumProgressivePasses равно Integer.MAX_VALUE, возвращает Integer.MAX_VALUE. В противном случае возвращает getSourceMinProgressivePass() + getSourceNumProgressivePasses() - 1.
Возвращает:
индекс последнего читаемого прохода или Integer.MAX_VALUE.

getSourceNumProgressivePasses

public int getSourceNumProgressivePasses()
Возвращает количество прогрессивных проходов, которые будут декодированы. Если значение не задано, возвращается Integer.MAX_VALUE (что является правильным значением).
Возвращает:
количество декодируемых проходов.
См. также:
  • setSourceProgressivePasses(int, int)
  • getSourceMinProgressivePass()

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/ImageReadParam.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API