Класс ImageReaderSpi
- Все реализованные интерфейсы:
RegisterableService
public abstract class ImageReaderSpi extends ImageReaderWriterSpi
ImageReaders. Дополнительные сведения о классах поставщиков служб см. в комментарии к классу IIORegistry. Каждый ImageReaderSpi предоставляет несколько типов сведений о классе ImageReader, с которым он связан.
Имя поставщика, определившего класс SPI, и краткое описание класса доступны с помощью методов getVendorName, getDescription и getVersion. Эти методы можно интернационализировать, чтобы предоставлять данные с учетом локали. Они предназначены главным образом для вывода краткой информации, понятной пользователю, которая может использоваться для составления всплывающего меню или другого списка.
Списки имен форматов, расширений файлов и MIME-типов, связанных со службой, можно получить с помощью методов getFormatNames, getFileSuffixes и getMIMETypes. Эти методы можно использовать для определения возможных ImageReaders для декодирования конкретного файла или потока на основе выбора формата вручную, имени файла или соответствий MIME (например, при доступе к файлу по HTTP или в качестве вложения электронной почты).
Более надежный способ определить, какие ImageReaders могут анализировать конкретный поток данных, предоставляет метод canDecodeInput. Этот метод позволяет поставщику службы проверять фактическое содержимое потока.
Наконец, экземпляр класса ImageReader, связанного с этим поставщиком службы, можно получить вызовом метода createReaderInstance. Любую ресурсоемкую инициализацию, например загрузку собственных библиотек или создание больших таблиц, следует отложить как минимум до первого вызова этого метода.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Class<?>[] |
inputTypes |
Массив объектов Class, возвращаемый методом getInputTypes; изначально равен null. |
static final Class<?>[] |
STANDARD_INPUT_TYPE |
Устарело. |
protected String[] |
writerSpiNames |
Массив строк, возвращаемый методом getImageWriterSpiNames; изначально равен null. |
Поля, объявленные в классе ImageReaderWriterSpi
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat
Поля, объявленные в классе IIOServiceProvider
vendorName, version
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает пустой ImageReaderSpi. |
|
| Создает ImageReaderSpi с заданным набором значений. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean |
canDecodeInput |
Возвращает true, если переданный исходный объект, по-видимому, имеет формат, поддерживаемый этим считывателем. |
ImageReader |
createReaderInstance() |
Возвращает экземпляр реализации ImageReader, связанной с этим поставщиком службы. |
abstract ImageReader |
createReaderInstance |
Возвращает экземпляр реализации ImageReader, связанной с этим поставщиком службы. |
String[] |
getImageWriterSpiNames() |
Возвращает массив Strings, содержащий полные имена всех классов ImageWriterSpi, которые могут интерпретировать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком службы, или null, если такие ImageWriters не указаны. |
Class<?>[] |
getInputTypes() |
Возвращает массив объектов Class, указывающих типы объектов, которые можно использовать в качестве аргументов метода setInput считывателя. |
boolean |
isOwnReader |
Возвращает true, если переданный объект ImageReader является экземпляром ImageReader, связанного с этим поставщиком службы. |
Методы, объявленные в классе ImageReaderWriterSpi
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported
Методы, объявленные в классе 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— массивStrings, не равныйnull, с указанием имен форматов. Должна присутствовать как минимум одна запись. -
suffixes— массивStrings с указанием распространенных расширений файлов. Если расширения не определены, следует указатьnull. Массив длины 0 будет нормализован доnull. -
MIMETypes— массивStrings с указанием MIME-типов формата. Если MIME-типы не определены, следует указатьnull. Массив длины 0 будет нормализован доnull. -
readerClassName— полное имя связанного классаImageReader, представленное строкой, не равнойnull String. -
inputTypes— массив объектовClassдлиной не менее 1, не равныйnull, с указанием допустимых типов входных данных. -
writerSpiNames— массивStrings с именами классов всех связанныхImageWriters илиnull. Массив длины 0 нормализуется доnull. -
supportsStandardStreamMetadataFormat—boolean, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных. -
nativeStreamMetadataFormatName—Stringилиnull, возвращаемый методомgetNativeStreamMetadataFormatName. -
nativeStreamMetadataFormatClassName—Stringилиnull, используемый для создания объекта формата метаданных, возвращаемого методомgetNativeStreamMetadataFormat. -
extraStreamMetadataFormatNames— массивStrings илиnull, возвращаемый методомgetExtraStreamMetadataFormatNames. Массив длины 0 нормализуется доnull. -
extraStreamMetadataFormatClassNames— массивStrings илиnull, используемый для создания объекта формата метаданных, возвращаемого методомgetStreamMetadataFormat. Массив длины 0 нормализуется доnull. -
supportsStandardImageMetadataFormat—boolean, указывающий, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных. -
nativeImageMetadataFormatName—Stringилиnull, возвращаемый методомgetNativeImageMetadataFormatName. -
nativeImageMetadataFormatClassName—Stringили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.
- Возвращает:
- массив объектов
Classдлиной не менее 1, не равныйnull.
canDecodeInput
public abstract boolean canDecodeInput(Object source) throws IOException
true, если переданный исходный объект, по-видимому, имеет формат, поддерживаемый этим считывателем. Возврат true этим методом не гарантирует успешного чтения, а лишь указывает на достаточно высокую вероятность успеха, определенную на основе краткой проверки содержимого потока. Если источник представляет собой ImageInputStream, реализации обычно проверяют первые несколько байтов потока на наличие «магического числа», связанного с форматом. После начала фактического чтения считыватель все еще может сообщить об ошибке в любой момент до завершения декодирования. Важно не изменять состояние объекта, чтобы другие ImageReaderSpis могли корректно определить, способны ли они декодировать объект. В частности, если источником является 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()
Strings, содержащий полные имена всех классов ImageWriterSpi, которые могут интерпретировать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком службы, или null, если такие ImageWriters не указаны. Если возвращено значение, не равное null, массив должен иметь ненулевую длину. Первым элементом массива должно быть имя поставщика службы для «предпочтительного» средства записи, так как оно будет использоваться для создания ImageWriter, возвращаемого методом ImageIO.getImageWriter(ImageReader).
Этот механизм можно использовать для получения ImageWriters, способных интерпретировать внутреннюю структуру метаданных, не содержащих пиксельных данных (см. IIOTreeInfo), созданных ImageReader. Получив эти данные из ImageReader и передав их одному из ImageWriters, полученных с помощью этого метода, клиентская программа может прочитать изображение, изменить его и записать обратно, сохранив все метаданные, не разбираясь во внутренней структуре метаданных или даже в формате изображения.
- Возвращает:
- массив
Strings длиной не менее 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html
{ ImageInputStream.class }.