Spec-Zone.ru › OpenJDK 24

Класс ImageReaderSpi

java.lang.Object
javax.imageio.spi.IIOServiceProvider
javax.imageio.spi.ImageReaderWriterSpi
javax.imageio.spi.ImageReaderSpi
Все реализованные интерфейсы:
RegisterableService
public abstract class ImageReaderSpi extends ImageReaderWriterSpi
Интерфейс поставщика служб (SPI) для ImageReader. Дополнительную информацию о классах поставщиков служб см. в комментарии к классу IIORegistry.

Каждый ImageReaderSpi предоставляет несколько типов информации о классе ImageReader, с которым он связан.

Название поставщика SPI и краткое описание класса доступны через методы getVendorName, getDescription и getVersion. Эти методы могут быть локализованы для обеспечения вывода, соответствующего определённому языку. Эти методы предназначены в основном для предоставления краткой, понятной для человека информации, которая может быть использована для организации всплывающего меню или другого списка.

Списки имён форматов, расширений файлов и MIME-типов, связанных со службой, можно получить с помощью методов getFormatNames, getFileSuffixes и getMIMETypes. Эти методы могут использоваться для идентификации потенциальных ImageReader для декодирования конкретного файла или потока на основе ручного выбора формата, имени файла или ассоциаций MIME (например, при доступе к файлу через HTTP или как вложение в электронное письмо).

Более надёжный способ определить, какие ImageReader, вероятно, смогут обработать определённый поток данных, предоставляется методом canDecodeInput. Этот метод позволяет поставщику службы проверить фактическое содержимое потока.

Наконец, экземпляр класса ImageReader, связанного с этим поставщиком службы, можно получить, вызвав метод createReaderInstance. Любая трудоёмкая инициализация, такая как загрузка нативных библиотек или создание больших таблиц, должна быть отложена, по крайней мере, до первого вызова этого метода.

См. также:
  • IIORegistry
  • ImageReader

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

Модификатор и тип Поле Описание
protected Class<?>[] inputTypes
Массив объектов Class, которые должны быть возвращены методом getInputTypes, первоначально null.
static final Class<?>[] STANDARD_INPUT_TYPE
Устаревшее.
Вместо использования этого поля, напрямую создавайте эквивалентный массив { ImageInputStream.class }.
protected String[] writerSpiNames
Массив строк, который должен быть возвращён методом getImageWriterSpiNames, первоначально null.

Поля, объявленные в классе javax.imageio.spi.ImageReaderWriterSpi

extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat

Поля, объявленные в классе javax.imageio.spi.IIOServiceProvider

vendorName, version

Краткое описание конструкторов

ImageReaderSpi()
ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Модификатор Конструктор Описание
protected
Создаёт пустой ImageReaderSpi.
Создаёт ImageReaderSpi с заданными значениями.

Краткое описание методов

Модификатор и тип Метод Описание
abstract boolean canDecodeInput(Object source)
Возвращает true, если предоставленный объект источника, похоже, имеет формат, поддерживаемый этим читателем.
ImageReader createReaderInstance()
Возвращает экземпляр реализации ImageReader, связанный с этим поставщиком службы.
abstract ImageReader createReaderInstance(Object extension)
Возвращает экземпляр реализации ImageReader, связанный с этим поставщиком службы.
String[] getImageWriterSpiNames()
Возвращает массив String, содержащий полные имена всех классов ImageWriterSpi, которые могут понимать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком службы, или null, если такие ImageWriter не указаны.
Class<?>[] getInputTypes()
Возвращает массив объектов Class, указывающий какие типы объектов могут быть использованы в качестве аргументов для метода setInput читателя.
boolean isOwnReader(ImageReader reader)
Возвращает true, если объект ImageReader, переданный в метод, является экземпляром класса ImageReader, связанного с этим поставщиком службы.

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

getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported

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

getDescription, getVendorName, getVersion, onDeregistration, onRegistration

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

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

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

STANDARD_INPUT_TYPE

@Deprecated public static final Class<?>[] STANDARD_INPUT_TYPE
Устаревшее.
Вместо использования этого поля, создайте непосредственно эквивалентный массив { ImageInputStream.class }.
Массив с одним элементом, изначально содержащий ImageInputStream.class, который должен возвращаться методом getInputTypes.

inputTypes

protected Class<?>[] inputTypes
Массив объектов типа Class, которые должны возвращаться методом getInputTypes, изначально null.

writerSpiNames

protected String[] writerSpiNames
Массив строк, который должен возвращаться методом getImageWriterSpiNames, изначально null.

Подробное описание конструкторов

ImageReaderSpi

protected ImageReaderSpi()
Создаёт пустой ImageReaderSpi. Подклассу необходимо инициализировать переменные экземпляра и/или переопределить методы, чтобы предоставить рабочие версии всех методов.

ImageReaderSpi

public ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Создаёт ImageReaderSpi с заданным набором значений.
Параметры:
vendorName - имя поставщика, как не-null String.
version - идентификатор версии, как не-null String.
names - массив, не содержащий null, имён форматов. Должен содержать хотя бы один элемент.
suffixes - массив String, указывающих на общие расширения файлов. Если расширения не определены, необходимо передать null. Массив длиной 0 будет нормализован до null.
MIMETypes - массив String, указывающих на MIME-типы форматов. Если MIME-типы не определены, необходимо передать null. Массив длиной 0 будет нормализован до null.
readerClassName - полное имя класса связанного ImageReader, как не-null String.
inputTypes - массив, не содержащий null, объектов Class, длина которого не меньше 1, указывающих на допустимые типы ввода.
writerSpiNames - массив String, именований классов всех связанных ImageWriter, или null. Массив длиной 0 будет нормализован до null.
supportsStandardStreamMetadataFormat - флаг, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных.
nativeStreamMetadataFormatName - String, или null, который должен возвращаться методом getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName - String, или null, который используется для создания объекта формата метаданных, который должен возвращаться методом getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames - массив String, или null, который должен возвращаться методом getExtraStreamMetadataFormatNames. Массив длиной 0 будет нормализован до null.
extraStreamMetadataFormatClassNames - массив String, или null, который используется для создания объекта формата метаданных, который должен возвращаться методом getStreamMetadataFormat. Массив длиной 0 будет нормализован до null.
supportsStandardImageMetadataFormat - флаг, указывающий, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных.
nativeImageMetadataFormatName - String, или null, который должен возвращаться методом getNativeImageMetadataFormatName.
nativeImageMetadataFormatClassName - String, или null, который используется для создания объекта формата метаданных, который должен возвращаться методом getNativeImageMetadataFormat.
extraImageMetadataFormatNames - массив String, который должен возвращаться методом getExtraImageMetadataFormatNames. Массив длиной 0 будет нормализован до null.
extraImageMetadataFormatClassNames - массив String, или null, который используется для создания объекта формата метаданных, который должен возвращаться методом getImageMetadataFormat. Массив длиной 0 будет нормализован до null.
Исключения:
IllegalArgumentException - если vendorName равно null.
IllegalArgumentException - если version равно null.
IllegalArgumentException - если names равно null или имеет длину 0.
IllegalArgumentException - если readerClassName равно null.
IllegalArgumentException - если inputTypes равно null или имеет длину 0.

Подробное описание методов

getInputTypes

public Class<?>[] getInputTypes()
Возвращает массив объектов Class, указывающих на типы объектов, которые могут использоваться в качестве аргументов для метода setInput читателя.

Для большинства читателей, которые принимают входные данные только из ImageInputStream, должен возвращаться массив с одним элементом, содержащим ImageInputStream.class.

Возвращает:
не-null массив объектов Class длиной не менее 1.

canDecodeInput

public abstract boolean canDecodeInput(Object source) throws IOException
Возвращает true, если предоставленный объект источника, похоже, соответствует формату, поддерживаемому этим читателем. Возврат true из этого метода не гарантирует, что чтение будет успешным, а только то, что есть разумная вероятность успеха на основе краткого осмотра содержимого потока. Если источник является ImageInputStream, реализации обычно проверяют первые несколько байтов потока на наличие "магического числа", связанного с форматом. После начала фактического чтения читатель может в любое время до завершения декодирования указать на ошибку.

Важно, чтобы состояние объекта не нарушалось, чтобы другие ImageReaderSpi могли должным образом определить, могут ли они декодировать объект. В частности, если источник является ImageInputStream, следует использовать пару mark/reset для сохранения позиции в потоке.

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

Если source не является экземпляром одного из классов, возвращённых методом getInputTypes, метод просто должен возвращать false.

Параметры:
source - объект (обычно ImageInputStream), который должен быть декодирован.
Возвращает:
true, если вероятно, что этот поток может быть декодирован.
Исключения:
IllegalArgumentException - если source равно null.
IOException - если произошла ошибка ввода/вывода при чтении потока.

createReaderInstance

public ImageReader createReaderInstance() throws IOException
Возвращает экземпляр реализации ImageReader, связанной с этим поставщиком услуг. Возвращённый объект изначально будет находиться в начальном состоянии, как если бы был вызван его метод reset.

Реализация по умолчанию просто возвращает createReaderInstance(null).

Возвращает:
экземпляр ImageReader.
Исключения:
IOException - если произошла ошибка при загрузке, инициализации класса читателя, или при создании или инициализации объекта читателя.

createReaderInstance

public abstract ImageReader createReaderInstance(Object extension) throws IOException
Возвращает экземпляр реализации ImageReader, связанной с этим поставщиком услуг. Возвращённый объект изначально будет находиться в начальном состоянии, как если бы был вызван его метод reset.

Object может быть передан в плагин при его создании. Характер объекта полностью зависит от конкретного плагина.

Как правило, плагин будет реализовывать этот метод с кодом, подобным return new MyImageReader(this).

Параметры:
extension - объект расширения, специфичный для плагина, который может быть null.
Возвращает:
экземпляр ImageReader.
Исключения:
IOException - если попытка создать читатель завершилась ошибкой.
IllegalArgumentException - если конструктор ImageReader сгенерировал исключение IllegalArgumentException, чтобы указать, что объект расширения неприемлем.

isOwnReader

public boolean isOwnReader(ImageReader reader)
Возвращает true, если объект ImageReader, переданный в качестве аргумента, является экземпляром класса ImageReader, связанного с этим поставщиком услуг.

Реализация по умолчанию сравнивает полное имя класса аргумента reader с именем класса, переданным в конструктор. Этот метод можно переопределить, если требуется более сложная проверка.

Параметры:
reader - экземпляр ImageReader.
Возвращает:
true, если reader распознан.
Исключения:
IllegalArgumentException - если reader равно null.

getImageWriterSpiNames

public String[] getImageWriterSpiNames()
Возвращает массив String, содержащий полные имена всех классов ImageWriterSpi, которые могут понимать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком сервисов, или null, если такие ImageWriter не указаны. Если возвращается значение отличное от null, оно должно иметь ненулевую длину.

Первый элемент массива должен содержать имя поставщика сервисов для "предпочтительного" записывателя, так как он будет использован для создания ImageWriter, возвращаемого методом ImageIO.getImageWriter(ImageReader).

Этот механизм может использоваться для получения ImageWriters, которые будут понимать внутреннюю структуру метаданных без пикселей (см. IIOTreeInfo), генерируемых ImageReader. Получив эти данные из ImageReader и передав их одному из ImageWriters, полученных с помощью этого метода, клиентская программа может прочитать изображение, изменить его каким-либо образом и записать обратно, сохранив все метаданные, не понимая ничего о внутренней структуре метаданных или даже формате изображения.

Возвращает:
массив String длиной не менее 1, содержащий имена ImageWriterSpi, или null.
См. также:
  • ImageIO.getImageWriter(ImageReader)

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

Spec-Zone.ru

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