Spec-Zone.ru › OpenJDK 25

Класс ImageReaderSpi

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

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

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

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

Более надежный способ определить, какие ImageReaders могут анализировать конкретный поток данных, предоставляет метод 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

Поля, объявленные в классе 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()
Возвращает массив Strings, содержащий полные имена всех классов ImageWriterSpi, которые могут интерпретировать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком службы, или null, если такие ImageWriters не указаны.
Class<?>[] getInputTypes()
Возвращает массив объектов Class, указывающих типы объектов, которые можно использовать в качестве аргументов метода setInput считывателя.
boolean isOwnReader(ImageReader reader)
Возвращает true, если переданный объект ImageReader является экземпляром ImageReader, связанного с этим поставщиком службы.

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

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

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

getDescription, getVendorName, getVersion, onDeregistration, onRegistration

Методы, объявленные в классе 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 — массив Strings, не равный null, с указанием имен форматов. Должна присутствовать как минимум одна запись.
suffixes — массив Strings с указанием распространенных расширений файлов. Если расширения не определены, следует указать null. Массив длины 0 будет нормализован до null.
MIMETypes — массив Strings с указанием MIME-типов формата. Если MIME-типы не определены, следует указать null. Массив длины 0 будет нормализован до null.
readerClassName — полное имя связанного класса ImageReader, представленное строкой, не равной null String.
inputTypes — массив объектов Class длиной не менее 1, не равный null, с указанием допустимых типов входных данных.
writerSpiNames — массив Strings с именами классов всех связанных ImageWriters или null. Массив длины 0 нормализуется до null.
supportsStandardStreamMetadataFormat — boolean, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных.
nativeStreamMetadataFormatName — String или null, возвращаемый методом getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName — String или null, используемый для создания объекта формата метаданных, возвращаемого методом getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames — массив Strings или null, возвращаемый методом getExtraStreamMetadataFormatNames. Массив длины 0 нормализуется до null.
extraStreamMetadataFormatClassNames — массив Strings или null, используемый для создания объекта формата метаданных, возвращаемого методом getStreamMetadataFormat. Массив длины 0 нормализуется до null.
supportsStandardImageMetadataFormat — boolean, указывающий, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных.
nativeImageMetadataFormatName — String или null, возвращаемый методом getNativeImageMetadataFormatName.
nativeImageMetadataFormatClassName — String или null, используемый для создания объекта формата метаданных, возвращаемого методом getNativeImageMetadataFormat.
extraImageMetadataFormatNames — массив Strings, возвращаемый методом getExtraImageMetadataFormatNames. Массив длины 0 нормализуется до null.
extraImageMetadataFormatClassNames — массив Strings или 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.

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

canDecodeInput

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

Важно не изменять состояние объекта, чтобы другие ImageReaderSpis могли корректно определить, способны ли они декодировать объект. В частности, если источником является 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()
Возвращает массив Strings, содержащий полные имена всех классов ImageWriterSpi, которые могут интерпретировать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком службы, или null, если такие ImageWriters не указаны. Если возвращено значение, не равное null, массив должен иметь ненулевую длину.

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html

Spec-Zone.ru

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