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

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

Модификатор Конструктор Описание
protected ImageReaderSpi()

Создаёт пустой 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)

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

Возвращает:
не-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 не указаны. Если возвращено ненулевое значение, оно должно иметь ненулевую длину.

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

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

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

© 1993, 2020, 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/11/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html

Spec-Zone .ru
спецификации, руководства, описания, API