Класс 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. |
Поля, объявленные в классе ImageReaderWriterSpi
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat | Модификатор и тип | Поле | Описание |
|---|---|---|
protected String[] |
extraImageMetadataFormatClassNames |
Массив объектов String, содержащий имена классов дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraImageMetadataFormatNames |
Массив объектов String, содержащий имена дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraStreamMetadataFormatClassNames |
Массив объектов String, содержащий имена классов дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraStreamMetadataFormatNames |
Массив объектов String, содержащий имена дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
MIMETypes |
Массив строк, возвращаемый методом getMIMETypes; изначально — null. |
protected String[] |
names |
Массив строк, возвращаемый методом getFormatNames; изначально — null. |
protected String |
nativeImageMetadataFormatClassName |
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeImageMetadataFormatName |
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeStreamMetadataFormatClassName |
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeStreamMetadataFormatName |
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
pluginClassName |
Объект String, содержащий имя связанного класса подключаемого модуля; изначально — null. |
protected String[] |
suffixes |
Массив строк, возвращаемый методом getFileSuffixes; изначально — null. |
protected boolean |
supportsStandardImageMetadataFormat |
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных изображений; изначально — false. |
protected boolean |
supportsStandardStreamMetadataFormat |
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных потоков; изначально — false. |
Поля, объявленные в классе IIOServiceProvider
vendorName, version | Модификатор и тип | Поле | Описание |
|---|---|---|
protected String |
vendorName |
Объект String, возвращаемый методом getVendorName; изначально — null. |
protected String |
version |
Объект String, возвращаемый методом getVersion; изначально — null. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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, связанного с этим поставщиком службы. |
Методы, объявленные в классе ImageReaderWriterSpi
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported | Модификатор и тип | Метод | Описание |
|---|---|---|
String[] |
getExtraImageMetadataFormatNames() |
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем. |
String[] |
getExtraStreamMetadataFormatNames() |
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем. |
String[] |
getFileSuffixes() |
Возвращает массив объектов String, содержащий список расширений файлов, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
String[] |
getFormatNames() |
Возвращает массив объектов String, содержащий понятные человеку названия форматов, обычно используемых реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
IIOMetadataFormat |
getImageMetadataFormat |
Возвращает объект IIOMetadataFormat с описанием указанного формата метаданных изображения или null, если описание недоступно. |
String[] |
getMIMETypes() |
Возвращает массив объектов String, содержащий список типов MIME, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
String |
getNativeImageMetadataFormatName() |
Возвращает имя «собственного» формата метаданных изображений для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу без потерь метаданных изображения, хранящихся в формате, обрабатываемом этим подключаемым модулем. |
String |
getNativeStreamMetadataFormatName() |
Возвращает имя «собственного» формата метаданных потоков для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу без потерь метаданных потока, хранящихся в формате, обрабатываемом этим подключаемым модулем. |
String |
getPluginClassName() |
Возвращает полное имя класса подключаемого модуля ImageReader или ImageWriter, связанного с этим поставщиком службы. |
IIOMetadataFormat |
getStreamMetadataFormat |
Возвращает объект IIOMetadataFormat с описанием указанного формата метаданных потока или null, если описание недоступно. |
boolean |
isStandardImageMetadataFormatSupported() |
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем. |
boolean |
isStandardStreamMetadataFormatSupported() |
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем. |
Методы, объявленные в классе IIOServiceProvider
getDescription, getVendorName, getVersion, onDeregistration, onRegistration | Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String |
getDescription |
Возвращает краткое описание этого поставщика службы и связанной с ним реализации, понятное человеку. |
String |
getVendorName() |
Возвращает имя поставщика, ответственного за создание этого поставщика службы и связанной с ним реализации. |
String |
getVersion() |
Возвращает строку с описанием номера версии этого поставщика службы и связанной с ним реализации. |
void |
onDeregistration |
Обратный вызов, который будет выполнен при отмене регистрации класса Spi в ServiceRegistry. |
void |
onRegistration |
Обратный вызов, который будет выполнен ровно один раз после создания экземпляра класса Spi и его регистрации в ServiceRegistry. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API будет удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс среды выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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 из этого метода не гарантирует успешного чтения, а лишь указывает на достаточно высокую вероятность успеха на основании краткого изучения содержимого потока. Если источник является 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. - См. также:
© 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.
{ ImageInputStream.class }.