Класс 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- массивStringMIME-типов формата. Если MIME-типы не определены, должен быть переданnull. Массив длиной 0 будет нормирован вnull. -
readerClassName- полное квалифицированное имя связанного классаImageReader, в качестве не-null String. -
inputTypes- массив, не содержащийnullэлементовClassобъектов, содержащих допустимые типы ввода. Длина массива должна быть не меньше 1. -
writerSpiNames- массивStringимён классов всех связанныхImageWriterилиnull. Массив длиной 0 будет нормирован вnull. -
supportsStandardStreamMetadataFormat- значение, указывающее, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных. -
nativeStreamMetadataFormatName- значение, илиnull, которое возвращаетgetNativeStreamMetadataFormatName. -
nativeStreamMetadataFormatClassName- значение, илиnull, для создания объекта формата метаданных, возвращаемого методомgetNativeStreamMetadataFormat. -
extraStreamMetadataFormatNames- массивStringилиnull, возвращаемый методомgetExtraStreamMetadataFormatNames. Массив длиной 0 будет нормирован вnull. -
extraStreamMetadataFormatClassNames- массивStringилиnull, используемый для создания объекта формата метаданных, возвращаемого методомgetStreamMetadataFormat. Массив длиной 0 будет нормирован вnull. -
supportsStandardImageMetadataFormat- значение, указывающее, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных. -
nativeImageMetadataFormatName- значение, илиnull, возвращаемое методомgetNativeImageMetadataFormatName. -
nativeImageMetadataFormatClassName- значение, или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, 2023, 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/21/docs/api/java.desktop/javax/imageio/spi/ImageReaderSpi.html
{ ImageInputStream.class }напрямую.