Spec-Zone.ru › OpenJDK 27

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

Поля, объявленные в классе ImageReaderWriterSpi

extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
Модификатор и тип Поле Описание
protected String[] extraImageMetadataFormatClassNames
Массив объектов String, содержащий имена классов дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraImageMetadataFormatNames
Массив объектов String, содержащий имена дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraStreamMetadataFormatClassNames
Массив объектов String, содержащий имена классов дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraStreamMetadataFormatNames
Массив объектов String, содержащий имена дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] MIMETypes
Массив строк, возвращаемый методом getMIMETypes; изначально — null.
protected String[] names
Массив строк, возвращаемый методом getFormatNames; изначально — null.
protected String nativeImageMetadataFormatClassName
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeImageMetadataFormatName
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeStreamMetadataFormatClassName
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeStreamMetadataFormatName
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String pluginClassName
Объект String, содержащий имя связанного класса подключаемого модуля; изначально — null.
protected String[] suffixes
Массив строк, возвращаемый методом getFileSuffixes; изначально — null.
protected boolean supportsStandardImageMetadataFormat
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных изображений; изначально — false.
protected boolean supportsStandardStreamMetadataFormat
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных потоков; изначально — false.

Поля, объявленные в классе IIOServiceProvider

vendorName, version
Модификатор и тип Поле Описание
protected String vendorName
Объект String, возвращаемый методом getVendorName; изначально — null.
protected String version
Объект String, возвращаемый методом getVersion; изначально — null.

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

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, связанного с этим поставщиком службы.

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

getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
Модификатор и тип Метод Описание
String[] getExtraImageMetadataFormatNames()
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем.
String[] getExtraStreamMetadataFormatNames()
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем.
String[] getFileSuffixes()
Возвращает массив объектов String, содержащий список расширений файлов, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
String[] getFormatNames()
Возвращает массив объектов String, содержащий понятные человеку названия форматов, обычно используемых реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
IIOMetadataFormat getImageMetadataFormat(String formatName)
Возвращает объект IIOMetadataFormat с описанием указанного формата метаданных изображения или null, если описание недоступно.
String[] getMIMETypes()
Возвращает массив объектов String, содержащий список типов MIME, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
String getNativeImageMetadataFormatName()
Возвращает имя «собственного» формата метаданных изображений для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу без потерь метаданных изображения, хранящихся в формате, обрабатываемом этим подключаемым модулем.
String getNativeStreamMetadataFormatName()
Возвращает имя «собственного» формата метаданных потоков для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу без потерь метаданных потока, хранящихся в формате, обрабатываемом этим подключаемым модулем.
String getPluginClassName()
Возвращает полное имя класса подключаемого модуля ImageReader или ImageWriter, связанного с этим поставщиком службы.
IIOMetadataFormat getStreamMetadataFormat(String formatName)
Возвращает объект IIOMetadataFormat с описанием указанного формата метаданных потока или null, если описание недоступно.
boolean isStandardImageMetadataFormatSupported()
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем.
boolean isStandardStreamMetadataFormatSupported()
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем.

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

getDescription, getVendorName, getVersion, onDeregistration, onRegistration
Модификатор и тип Метод Описание
abstract String getDescription(Locale locale)
Возвращает краткое описание этого поставщика службы и связанной с ним реализации, понятное человеку.
String getVendorName()
Возвращает имя поставщика, ответственного за создание этого поставщика службы и связанной с ним реализации.
String getVersion()
Возвращает строку с описанием номера версии этого поставщика службы и связанной с ним реализации.
void onDeregistration(ServiceRegistry registry, Class<?> category)
Обратный вызов, который будет выполнен при отмене регистрации класса Spi в ServiceRegistry.
void onRegistration(ServiceRegistry registry, Class<?> category)
Обратный вызов, который будет выполнен ровно один раз после создания экземпляра класса Spi и его регистрации в ServiceRegistry.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API будет удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс среды выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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 массив String, указывающих имена форматов. Должна присутствовать как минимум одна запись.
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 — boolean, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных.
nativeStreamMetadataFormatName — String или null, возвращаемый из getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName — String или null, используемый для создания экземпляра объекта формата метаданных, возвращаемого из getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames — массив String либо null, возвращаемый из getExtraStreamMetadataFormatNames. Массив длиной 0 нормализуется до null.
extraStreamMetadataFormatClassNames — массив String либо null, используемый для создания экземпляра объекта формата метаданных, возвращаемого из getStreamMetadataFormat. Массив длиной 0 нормализуется до null.
supportsStandardImageMetadataFormat — boolean, указывающий, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных.
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.

Форматы типа «raw», для которых потенциально можно попытаться прочитать практически любой поток, должны возвращать 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)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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