Класс 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 | Массив объектов |
static Class<?>[] | STANDARD_INPUT_TYPE | Устарело. Вместо использования этого поля, создайте эквивалентный массив { ImageInputStream.class }. |
protected String[] | writerSpiNames | Массив строк, которые должны возвращаться из |
Поля, объявленные в классе 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(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) | Создаёт |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean | canDecodeInput(Object source) | Возвращает |
ImageReader | createReaderInstance() | Возвращает экземпляр реализации |
abstract ImageReader | createReaderInstance(Object extension) | Возвращает экземпляр реализации |
String[] | getImageWriterSpiNames() | Возвращает массив |
Class<?>[] | getInputTypes() | Возвращает массив объектов |
boolean | isOwnReader(ImageReader reader) | Возвращает |
Методы, объявленные в классе 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- имя поставщика в виде не-nullString. -
version- идентификатор версии в виде не-nullString. -
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