Spec-Zone.ru › OpenJDK 21

Класс 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 framework. Плагин для определенного формата изображений вернёт экземпляры 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()
Возвращает текущее изображение назначения, заданное методом 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)

Установить диапазон проходных сжатия

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()

Получить индекс первого прохода

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

Получить индекс последнего прохода

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

Получить количество проходов сжатия

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

© 1993, 2023, 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/21/docs/api/java.desktop/javax/imageio/ImageReadParam.html

Spec-Zone.ru

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