Spec-Zone.ru › OpenJDK 17

Класс ImageReadParam

java.lang.Object
javax.imageio.IIOParam
javax.imageio.ImageReadParam
Direct Known Subclasses:
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, о которых им неизвестно. Они также могут игнорировать любые необязательные функции, которые они обычно отключают при создании собственных экземпляров 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)

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, 2021, 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/17/docs/api/java.desktop/javax/imageio/ImageReadParam.html

Spec-Zone.ru

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