Класс ImageReaderSpi
- Все реализованные интерфейсы:
RegisterableService
public abstract class ImageReaderSpi extends ImageReaderWriterSpi
ImageReader. Дополнительную информацию о классах поставщиков сервисов см. в комментарии к классу IIORegistry. Каждый ImageReaderSpi предоставляет несколько типов информации о классе ImageReader, с которым он связан.
Имя поставщика, который определил класс SPI, и краткое описание класса доступны через методы getVendorName, getDescription, и getVersion. Эти методы могут быть локализованы для предоставления вывода в соответствии с локалью. Эти методы предназначены в основном для предоставления краткой, удобочитаемой информации, которая может использоваться для организации всплывающего меню или другого списка.
Списки имен форматов, расширений файлов и MIME-типов, связанных с сервисом, можно получить с помощью методов getFormatNames, getFileSuffixes, и getMIMETypes. Эти методы могут использоваться для идентификации потенциальных ImageReader для декодирования конкретного файла или потока на основе ручного выбора формата, именования файлов или ассоциаций MIME (например, при доступе к файлу через HTTP или как к вложению в электронном письме).
Более надёжный способ определения, какие ImageReader способны обработать определённый поток данных, предоставляется методом canDecodeInput. Этот метод позволяет поставщику сервиса просмотреть содержимое фактического потока.
Наконец, экземпляр класса ImageReader , связанного с этим поставщиком сервиса, может быть получен вызовом метода createReaderInstance. Любая ресурсоёмкая инициализация, такая как загрузка нативных библиотек или создание больших таблиц, должна быть отложена, по крайней мере, до первого вызова этого метода.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Class<?>[] |
inputTypes |
Массив объектов Class, которые должны возвращаться из getInputTypes, по умолчанию null. |
static final Class<?>[] |
STANDARD_INPUT_TYPE |
Устарело. |
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 с заданными значениями. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean |
canDecodeInput |
Возвращает true, если предоставленный объект-источник, по-видимому, имеет формат, поддерживаемый этим ридером. |
ImageReader |
createReaderInstance() |
Возвращает экземпляр реализации ImageReader , связанной с этим поставщиком сервиса. |
abstract ImageReader |
createReaderInstance |
Возвращает экземпляр реализации ImageReader , связанной с этим поставщиком сервиса. |
String[] |
getImageWriterSpiNames() |
Возвращает массив String содержащий полные квалифицированные имена всех классов ImageWriterSpi, которые могут понимать внутреннее представление метаданных, используемое ImageReader , связанным с этим поставщиком сервиса, или null , если нет таких ImageWriter. |
Class<?>[] |
getInputTypes() |
Возвращает массив объектов Class указывающих типы объектов, которые могут быть использованы в качестве аргументов к методу setInput ридера. |
boolean |
isOwnReader |
Возвращает 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
Подробное описание полей
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, как не-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 из этого метода не гарантирует, что чтение будет успешным, только то, что есть разумная вероятность успеха на основе краткого анализа содержимого потока. Если источник является потоком, реализации обычно проверяют первые несколько байтов потока на наличие "магического числа", связанного с форматом. После начала фактического чтения ридер может в любой момент до завершения декодирования указать на ошибку. Важно, чтобы состояние объекта не нарушалось, чтобы другие ImageReaderSpi могли правильно определить, могут ли они декодировать объект. В частности, если источник является потоком, должен использоваться пар 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. - См. также:
© 1993, 2021, 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/17/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html
{ ImageInputStream.class }напрямую.