Класс 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 Устаревшее. Вместо использования этого поля, создайте соответствующий массив |
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массивString, указывающий имена форматов. Должно быть присутствовать по крайней мере одно значение. -
suffixes— массивString, указывающий общие расширения файлов. Если расширения не определены, следует использоватьnull. Массив длиной 0 будет нормализован доnull. -
MIMETypes— массивString, указывающий MIME-типы формата. Если MIME-типы не определены, следует использоватьnull. Массив длиной 0 будет нормализован доnull. -
readerClassName— полное имя связанного классаImageReader, как не-nullString. -
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 для сохранения позиции потока.
Форматы, такие как "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)
© 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.