Класс 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, имён форматов. Должен содержать хотя бы один элемент. -
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- флаг, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных. -
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 для сохранения позиции в потоке.
Форматы, такие как "сырой", которые потенциально могут попытаться прочитать практически любой поток, должны возвращать 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, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html
{ ImageInputStream.class }.