Spec-Zone.ru › OpenJDK 24

Класс 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.

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

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

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

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

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

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

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
Минимальный индекс прохода прогрессивного типа для чтения из источника. По умолчанию значение установлено в 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, возвращаемых методом ImageReader's getImageTypes. Если это не так, чтец сгенерирует исключение IIOException.

Параметры:
destination - BufferedImage для записи, или null.
См. также:
  • getDestination()

getDestination

public BufferedImage getDestination()
Возвращает BufferedImage, текущую установку метода setDestination, или null, если установка отсутствует.
Возвращает:
BufferedImage для записи.
См. также:
  • setDestination(java.awt.image.BufferedImage)

setDestinationBands

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

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

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

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

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

getDestinationBands

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

canSetSourceRenderSize

public boolean canSetSourceRenderSize()
Возвращает true, если этот читатель позволяет рендерить исходное изображение с произвольным размером в процессе декодирования, используя метод setSourceRenderSize. Если этот метод возвращает false, вызовы setSourceRenderSize сгенерируют исключение UnsupportedOperationException.
Возвращает:
true, если установка размера рендеринга источника поддерживается.
См. также:
  • setSourceRenderSize(java.awt.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(java.awt.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()

© 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

Spec-Zone.ru

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