Класс 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. Подклассы должны устанавливать это значение вручную.

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 возвращаемых методом 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, 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/ImageReadParam.html

Spec-Zone .ru
спецификации, руководства, описания, API